Operasi Tanggal Jam Strtotime/DateTime pada PHP

Poin pembahasan :
– Memformat tanggal jam
– Menambah atau mengurangi tanggal
– Membandingkan mana yang lebih dari atau kurang dari
– Mencari selisih dua tanggal
– Mencari daftar tanggal diantara dua tanggal
– Mencari selisih dua tanggal
– Validasi penulisan tanggal jam

Strtotime merupakan fungsi yang disediakan oleh php yang menurut saya syuper sekali fungsi ini, karena dengan satu fungsi ini kita bisa menyelesaikan beberapa masalah yang berkaitan dengan tanggal dan jam.

Misalnya kita ingin mengetahui lima hari lagi itu tanggal berapa ya? mungkin sebagian dari kita akan menggunakan cara tanggal sekarang + 5, misalnya sekarang tgl 5 + 5 berarti tanggal 10. Tapi akan masalah jika sekarang tgl 30, kan tidak mungkin tanggal 35, hehehe.

Sebelum melanjutkan, apakah Anda sudah tau arti Y-m-d H:i:s atau d F Y? bagi yang belum tau saya sarankan untuk membaca Date Manual terlebih dahulu supaya tidak bingung nantinya.

# Memformat tanggal jam
Misalkan kita punya data tanggal seperti ini 2017-09-01 11:20:55 dan ingin menampilkan tanggal tersebut menjadi 01 september 2017, 11:20 maka kita cukup melakukan seperti ini:

<?php
$data = "2017-09-01 11:20:55";
echo date("d F Y, H:i", strtotime($data));
?>

Ketika menjalankan strtotime($data) yang terjadi adalah php akan mengubah tanggal tersebut menjadi format timestamp seperti ini 1504239655, setiap tanggal/waktu memiliki unix timestamp. Ketika data sudah berbentuk timestamp maka data tersebut menjadi fleksibel untuk ditampilkan dalam format apa saja.

# Menambah atau mengurangi tanggal
Misalkan kita akan mencari tahu tanggal berapakah 5 hari kedepan, caranya seperti ini:

<?php
$time_sekarang = time();
echo date("d F Y", strtotime("+5 days", $time_sekarang));
?>

Maka akan didapati tanggal yang benar untuk lima hari kedepan dari sekarang.

Untuk mendapatkan timestamp waktu sekarang caranya bisa memakai fungsi time() atau strtotime(“now”) atau juga strtotime(date(“Y-m-d H:i:s”)). Sedangkan +5 days ini maksutnya menambahkan waktu yang ada diparameter kedua sebanyak 5 hari.

Parameter pertama bisa min atau plus tergantung kita ingin mengurangi atau menambahkan, dan bisa days, month, years, hours, minutes, seconds.

# Membandingkan mana yang lebih dari atau kurang dari
Untuk membandingkan tanggal, caranya cukup ubah tanggal menjadi format timestamp kemudian bandingkan, contoh:

<?php
$tgl1 = "2017-10-10";
$tgl2 = "2017-10-11";
if (strtotime($tgl2) > strtotime($tgl1)) {
    echo "tgl 2 lebih dari tgl 1";
}
?>

Jadi format timestamp bisa digunakan untuk perbandingan.

Menggunakan DateTime

Selain menggunakan strtotime, alternatif lainnya adalah menggunakan DateTime, DateTime mulai diperkenalkan sejak versi 5.2, saat ini rata-rata versi php yang sering dipakai sudah lebih dari 5.3, jadi saya rasa tidak ada masalah dengan DateTime.

Berikut contoh penggunakan DateTime:

<?php
//Memformat tanggal jam
$date1 = "2017-09-01 11:20:55";
$date = new DateTime($date1);
echo $date->format("d F Y, H:i");

//Menambah tanggal
$date1 = "2017-08-30";
$date = new DateTime($date1);
$date_plus = $date->modify("+5 days");
echo $date_plus->format("Y-m-d");

//Mengurangi tanggal
$date_min = $date->modify("-3 month");
echo $date_min->format("Y-m-d");

//Membandingkan
$date1 = new DateTime("2017-08-04");
$date2 = new DateTime("2017-08-06");
if ($date2 > $date1) {
    echo "ok";
}

Contoh kasus lain yang lebih komplek:

# Mencari daftar tanggal yang ada diantara dua tanggal

<?php
$begin = new DateTime('2017-08-01');
$end = new DateTime('2017-08-05');
$end = $end->modify('+1 day'); 

$interval = new DateInterval('P1D'); //referensi : https://en.wikipedia.org/wiki/ISO_8601#Durations
$daterange = new DatePeriod($begin, $interval ,$end);

foreach ($daterange as $date) {
    echo $date->format("Y-m-d") . "<br>";
}

# Mencari selisih dua tanggal

$begin = new DateTime('2017-08-01 23:00');
$end = new DateTime('2017-08-05 21:22');
$diff = $begin->diff($end);
echo "Selisihnya adalah : " . $diff->format("%d hari %h jam %i menit");

Hal lain yang sering kita butuhkan saat berurusan dengan tanggal dan jam adalah validasi penulisan tanggal dan jam, karena sebelum data dimasukkan ke database yang fieldnya bertipe DATETIME, data harus divalidasi dulu supaya bener. Berikut # Validasi penulisan tanggal jam

<?php
function valid_datetime($datetime) {
	if (preg_match('/^(19[0-9]{2}|2[0-9]{3})-(0[1-9]|1[012])-([123]0|[012][1-9]|31) ([01][0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9])$/', $datetime)) {
		return true;
	}
	
	return false;
}

$tgl = "2017-08-29 23:20:59";
if (valid_datetime($tgl)) {
	echo "valid";
}
?>

Sekian posting kali ini, semoga Anda menemukan apa yang sedang dicari 🙂

Oh ya jangan lupa like FB page Dokumenary atau subscribe ya…

Terimakasih

Category: Uncategorized

Tags: , , , , , , , , ,

Comments

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.