Bagi sebagian orang mungkin pernah merasakan betapa rumitnya bermain dengan format DateTime. Format satu ini bikin kepala puyeng kalau belum mengerti cara kerjaanya.
Kali ini saya akan mendemokan beberapa cara bermain dengan format DateTime. Sebelum masuk ke contoh kasus, ada baiknya jika mempelajari tentang beberapa hal berikut ini:
- Menggunakan TimeStamp
$nextWeek = time() + (7 * 24 * 60 * 60); // 7 days; 24 hours; 60 mins; 60 secs echo 'Now: '. date('Y-m-d') ."\n"; echo 'Next Week: '. date('Y-m-d', $nextWeek) ."\n"; // or using strtotime(): echo 'Next Week: '. date('Y-m-d', strtotime('+1 week')) ."\n";
Kamu bisa langsung mencoba script diatas menggunakan PHPFiddle. Contoh ditas akan memajukan tanggal hari ini selama seminggu.
Contoh lain:
Memajukan selama satu jam.$nextWeek = time() + (1 * 60 * 60); // 1 hours; 60 mins; 60 secs echo 'Now: '. date('Y-m-d') ."\n"; echo 'Next Week: '. date('Y-m-d', $nextWeek) ."\n"; // or using strtotime(): echo 'Next Week: '. date('Y-m-d', strtotime('+1 week')) ."\n";
Initnya time() + durasi waktu yang diinginkan. Contohnya jika ingin 3 bulan. Berangkat dari bulan hingga ke detik. Jadi, 3 bulan, 30 hari, 24 jam, 60 menit, 60 detik. time() + (3 * 30 * 24 * 60 * 60).
Permasalahan timbul saat tiap bulan tidak mempunyai jumlah hari yang sama. Lalu bagaimana supaya bisa pas dengan jumlah hari tiap bulannya? Kita bisa memperbaikinya menggunakan Relative Formats yang akan saya jelaskan dipoint berikutnya.
- Menggunakan DateTime Class
Penggunakan TimeStamp kurang cocok untuk jumlah yang relative atau berbeda tergantung dari tahun dan bulannya. Kalau untuk hal-hal yang sama seperti jam, menit, detik. Itu tidak masalah. Tetapi untuk jumlah hari? Berbeda cerita.Saya akan jelaskan contoh menggunakan Relative Formats:$date = new DateTime('2006-12-12'); $date->modify('+1 day'); echo $date->format('Y-m-d');
+1 day adalah salah satu contoh relative format. Kamu bisa menggantinya dengan +1 week atau +1 month. +1 month disini sudah diperhitungan banyaknya hari tiap bulannya, termasuk bulan kabisat.
Kamu juga bisa mencari misal hari senin pertama bulan berikutnya dengan First Monday of next month. Banyak hal yang bisa kamu lakukan dengan relative format.
One Response