Kemarin saya punya kasus dalam pemrograman php mengenai cara pencarian selisih dua buah tanggal.
Dalam kesempatan ini, saya mencoba berbagi pengalaman dalam memecahkan masalah tersebut.
Contoh :
tanggal 1 : 2011 - 06 - 12
tanggal 2 : 2012 - 06 - 12
Maka selisih dari dua tanggal tersebut adalah 12 bulan 0 hari.
berikut adalah fungsi dalam php yang ingin saya bagikan saat ini.
<?php
function hari ($t1, $t2, $precision = 6, $abbr = false) {
if (preg_match('/\D/', $t1) && ($t1 = strtotime($t1)) === false)
return false;
if (preg_match('/\D/', $t2) && ($t2 = strtotime($t2)) === false)
return false;
if ($t1 > $t2)
list($t1, $t2) = array($t2, $t1);
$diffs = array(
'year' => 0,
'month' => 0, 'day' => 0,
);
$abbrs = array(
'year' => 'year',
'month' => 'mth', 'day' => 0,
);
foreach (array_keys($diffs) as $interval) {
while ($t2 >= ($t3 = strtotime("+1 ${interval}", $t1))) {
$t1 = $t3;
++$diffs[$interval];
}
}
$stack = array();
foreach ($diffs as $interval => $num)
$stack[] = array($num, ($abbr ? $abbrs[$interval] : $interval) . ($num != 1 ? 's' : ''));
$ret = array();
while (count($ret) < $precision && ($item = array_shift($stack)) !== null) {
if ($item[0] >= 0)
$ret[] = "{$item[0]} {$item[1]}";
}
return implode(', ', $ret);
}
?>
untuk memanggil fungsi tersebut paste kan kode berikut tepat dibawah program diatas.
<?php
$t1 = "2014-12-21";
$t2 = "2011-12-21";
$selisih = hari($t1,$t2);
echo $selisih;
?>
Demikian lah cara untuk mencari selisih dua buah tanggal yang berbeda dari saya.
Semoga bermanfaat.
:)
Tidak ada komentar:
Posting Komentar