Mengira perbezaan hari

Apabila kita membangunkan sistem, seringkali kita berhadapan dengan mengira perbezaan hari. Terutamanya sistem yang melibatkan KPI ataupun ISO bagi sesuatu proses. Catatan kali ini akan menceritakan bagaimana kita boleh mendapatkan perbezaan hari dari 2 tarikh.

Bagi yang menggunakan PHP versi 5.2 dan kebawah bolehlah mencuba cara ini

<?php
$unix_time1 = mktime(0,0,0,3,1,2013);
$unix_time2 = mktime(0,0,0,5,1,2013);
	
echo $unix_balance = floor(($unix_time2 - $unix_time1) /(60 * 60 * 24));
?>

Format bagi fungsi mktime() adalah seperti ini mktime(jam,minit,saat,bulan,hari,tahun).  Kemudian kita perlu gunakan rumus ini bagi mendapatkan bilangan hari.

(Tarikh2 – Tarikh1) / (60saat x 60minit x 24jam)

Hasil dari pengiraan diatas, kita perlu melakukan proses pembundaran ke nilai yang lebih rendah. Dengan itu fungsi floor() diperlukan.

 

Cara yang kedua adalah dengan menggunakan Class Datetime yang terdapat didalam PHP 5.3 dan keatas. Menggunakan method diff. Bagi mendapat format yang boleh difahami, method format digunakan.

<?php
$Date1 = new Datetime('2013-03-01');
$Date2 = new Datetime('2013-05-01');
$interval = $Date1->diff($Date2);
	
echo $interval->format("%R%a days");
?>

Sekiranya kita perlu membuat perbandingan dengan data yang dipanggil dari pangkalan data, adalah lebih baik kita menggunakan sql. Ini bagi mengurangkan PHP perlu memprosesnya berulang-ulang kali. Caranya mudah. Pernyataan Sql dibawah menggunakan fungsi yang terdapat didalam MySQL.

 

Selamat mencuba!

SELECT DATEDIFF( tarikh_tamat, tarikh_mula )
FROM nama_jadual
WHERE syarat_anda
LIMIT 0 , 30

2 Replies to “Mengira perbezaan hari”

Leave a Reply

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