• Home
  • /
  • PHP
  • /
  • Menentukan Tanggal n Hari Berikutnya dan n Hari Sebelumnya Dari Tanggal Hari Ini
PHP

Menentukan Tanggal n Hari Berikutnya dan n Hari Sebelumnya Dari Tanggal Hari Ini

 

Dalam blog ini telah banyak saya bahas mengenai pengolahan tanggal. Namun sepertinya untuk menentukan tanggal dari n hari sesudah dan n hari sebelum tanggal hari ini belum pernah saya bahas.

Suatu ketika tentu kita pernah dihadapkan pada suatu kasus untuk menentukan tanggal n hari berikutnya dan n hari sebelumnya dari hari ini. Sebagai contoh misalnya dalam kasus peminjaman buku atau rental secara umum. Biasanya ketika terjadi transaksi peminjaman, sudah ditentukan batas waktu lamanya peminjaman. Sebagai contoh misalnya suatu rental menentukan maks lama peminjaman adalah 7 hari. Jika seseorang meminjam tanggal 20 April 2010, maka seharusnya si peminjam mengembalikan pinjamannya maksimal tanggal 27 April 2010. Sehingga jika pengembaliannya setelah tanggal 27 April maka diberikan denda.

Dari kasus di atas, tentunya untuk menentukan n hari ke depan setelah hari ini menjadikan problem tersendiri bagi seorang programmer. Tapi jangan khawatir, karena dengan PHP untuk menentukan tanggal n hari ke depan dan n hari sebelumnya dari tanggal hari ini dapat dilakukan dengan sangat mudah.

Adapun konsep untuk menyelesaikan masalah di atas adalah kita manfaatkan function mktime() di dalam PHP. Function mktime() ini digunakan untuk mendapatkan timestamp pada n hari ke depan dan n hari sebelumnya dari hari ini di dalam PHP. Selanjutnya timestamp yang diperoleh ini kita gunakan untuk menentukan tanggal pada n hari berikutnya dan n hari sebelum hari ini menggunakan function date(). Function date() merupakan function yang digunakan untuk mengatur format tanggal sesuai timestampnya.

Wah apa itu Timestamp? Timestamp adalah bilangan integer yang menyatakan waktu dalam satuan detik antara tanggal 1 Januari 1970 00:00:00 GMT sampai dengan waktu yang telah ditentukan.

OK berikut ini adalah contoh implementasi ide di atas untuk menentukan tanggal 10 hari berikutnya dan 10 hari sebelumnya dari tanggal sekarang.


<?php
$n = 10;

// menentukan timestamp 10 hari berikutnya dari tanggal hari ini
$nextN = mktime(0, 0, 0, date("m"), date("d") + $n, date("Y"));

// menentukan timestamp 10 hari sebelumnya dari tanggal hari ini
$prevN = mktime(0, 0, 0, date("m"), date("d") - $n, date("Y"));

// menampilkan tanggal 10 hari berikutnya dari tanggal hari ini berdasarkan timestamp nya
echo date("d-m-Y", $nextN);

echo "<br>";

// menampilkan tanggal 10 hari sebelumnya dari tanggal hari ini berdasarkan timestamp nya
echo date("d-m-Y", $prevN);
?>

Dari contoh di atas sebenarnya kita bisa kembangkan lagi untuk mendapatkan tanggal pada n bulan ke depan dan n bulan sebelumnya terhitung dari tanggal hari ini, yaitu dengan membuat timestampnya terlebih dahulu sbb:

// menentukan timestamp n bulan berikutnya dari tanggal hari ini
$nextN = mktime(0, 0, 0, date("m") + $n, date("d"), date("Y"));

// menentukan timestamp n bulan sebelumnya dari tanggal hari ini
$prevN = mktime(0, 0, 0, date("m") - $n, date("d"), date("Y"));

Demikian pula bila kita ingin menentukan tanggal n tahun berikutnya dan n tahun sebelumnya terhitung dari tanggal hari ini dengan terlebih dahulu membuat timestampnya sbb:

// menentukan timestamp n tahun berikutnya dari tanggal hari ini
$nextN = mktime(0, 0, 0, date("m"), date("d"), date("Y") + $n);

// menentukan timestamp n tahun sebelumnya dari tanggal hari ini
$prevN = mktime(0, 0, 0, date("m"), date("d"), date("Y") - $n);

Lantas… bagaimana bila untuk menentukan tanggal dari 3 bulan lebih 2 hari berikutnya dari tanggal hari ini? ya… cukup mudah saja kawan, secara umum untuk menentukan tanggal dari m bulan lebih n hari dari tanggal hari ini adalah membuat timestamp terlebih dahulu dengan perintah

// menentukan timestamp m bulan lebih n hari berikutnya dari tanggal hari ini
$nextN = mktime(0, 0, 0, date("m") + $m, date("d") + $n, date("Y"));

OK deh, mudah bukan membuat scriptnya? selamat mencoba dan semoga bermanfaat ya…

 

Bagikan artikel ini jika bermanfaat !

Assalaamu'alaikum.. aktivitas keseharian saya mengajar di Universitas Sebelas Maret, dengan matakuliah pemrograman dan basis data. Adapun bidang penelitian saya tentang computational thinking dan computer-aided learning.

Leave a Reply