Menghitung usia bisa dilakukan dengan rumus sederhana tanggal hari ini dikurangi tanggal lahir, untuk menghitung dengan script bisa juga menggunakan logika unixtime (detik) saat ini dikurang unixtime tahun lahir dibagi jumlah detik pertahun. Karena yang dihitung adalah usia, maka angkanya akan digenapkan kebawah. Contoh
17.2 tahun = 17 tahun 17.9 tahun = 17 tahun 17.4 tahun = 17 tahun
Dengan begitu kita bisa membuat script PHP, contoh untuk tahun lahirnya adalah 28 Februari 2003.
$tahunLahir = "28-02-2003"; $unixTimeSaatIni = time(); $unixTimeTahunLahir= strtotime($tahunLahir); $unixTimeDalamSetahun = 31536000; $hitungUsia = ($unixTimeSaatIni - $unixTimeTahunLahir) / $unixTimeDalamSetahun; echo $hitungUsia; // hasilnya 16.977401826484
hasil script diatas 16.977401826484
. Agar didapat angka bulat bisa menggunakan int
<?php $tahunLahir = "28-02-2003"; $unixTimeSaatIni = time(); $unixTimeTahunLahir= strtotime($tahunLahir); $unixTimeDalamSetahun = 31536000; $hitungUsia = ($unixTimeSaatIni - $unixTimeTahunLahir) / $unixTimeDalamSetahun; echo (int) $hitungUsia; // hasilnya 16
atau dengan floor
<?php $tahunLahir = "28-02-2003"; $unixTimeSaatIni = time(); $unixTimeTahunLahir= strtotime($tahunLahir); $unixTimeDalamSetahun = 31536000; $hitungUsia = ($unixTimeSaatIni - $unixTimeTahunLahir) / $unixTimeDalamSetahun; echo floor($hitungUsia); // hasilnya 16
lebih disarankan menggunakan floor
, karena code lebih mudah untuk di pahami.
Cara lain untuk menghitung usia bisa menggunakan Datetime
, scriptnya
<?php $tahunLahir = "28-02-2003"; $tz = new DateTimeZone('Asia/Jakarta'); $hitungUsia = DateTime::createFromFormat('d-m-Y', $tahunLahir, $tz) ->diff(new DateTime('now', $tz)) ->y; echo $hitungUsia;
Usia dalam Hari
Menghitung jumlah hari sejak anda lahir, bisa dengan unixtime, tetapi dibagi dengan jumlah detik dalam 1 hari.
1 hari = 24 jam
1 jam = 60 menit
1 menit = 60 detik
1 hari = 60*60*24 = 86400 detik (unixtime)
<?php $unixTimeSaatIni = time(); $unixTimeTahunLahir= strtotime($tahunLahir); $unixTimeDalamSehari = 86400; $hitungUsia = ($unixTimeSaatIni - $unixTimeTahunLahir) / $unixTimeDalamSehari; echo floor($hitungUsia) . ' hari'; // hasilnya // 6196 hari
versi datetime
<?php $tahunLahir = "28-02-2003"; $tz = new DateTimeZone('Asia/Jakarta'); $hitungUsia = DateTime::createFromFormat('d-m-Y', $tahunLahir, $tz) ->diff(new DateTime('now', $tz)) ->days; echo $hitungUsia . ' hari'; // hasilnya // 6196 hari
Usia dalam Bulan
Kita anggap dalam sebulan ada 30 hari, jadi untuk bisa kita hitung jumlah detik 1 hari = 86400 * 30 = 2,592,000 detik. Karena dianggap, ini yang buat hasilnya kurang akurat
<?php $unixTimeSaatIni = time(); $unixTimeTahunLahir= strtotime($tahunLahir); $unixTimeDalamSebulan = 2592000; $hitungUsia = ($unixTimeSaatIni - $unixTimeTahunLahir) / $unixTimeDalamSebulan; echo floor($hitungUsia) . ' Bulan'; // 206 Bulan
solusinya silahkan cobain ;). kalo dengan Datetime
<?php $tahunLahir = "28-02-2003"; $tz = new DateTimeZone('Asia/Jakarta'); $hitungUsia = DateTime::createFromFormat('d-m-Y', $tahunLahir, $tz) ->diff(new DateTime('now', $tz)); echo (($hitungUsia->format('%y') * 12) + $hitungUsia->format('%m')) . ' Bulan'; // hasilnya 203 bulan
hasil yang benar adalah 203 bulan, dengan Datetime tersebut