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

Leave a comment

Your email address will not be published. Required fields are marked *