Penggunaan fungsi UTCDATETIME pada PHP

Indonesian (Bahasa Indonesia) translation by Febri Ardian Sanjoyo (you can also view the original English article)

Anda akan sering ingin bekerja dengan tanggal dan waktu ketika mengembangkan situs web. Misalnya, Anda mungkin perlu menunjukkan tanggal modifikasi terakhir pada posting atau menyebutkan berapa lama waktu yang lalu seorang pembaca menulis beberapa komentar. Anda mungkin juga harus menunjukkan hitungan mundur dari hari ke hari sampai di event khusus.

Untungnya, PHP hadir dengan beberapa fungsi tanggal dan waktu bawaan yang akan membantu kita melakukan semua itu dan lebih mudah lagi.

Tutorial ini akan mengajari Anda cara memformat tanggal dan waktu saat ini dalam PHP. Anda juga akan belajar cara mendapatkan stempel waktu dari string tanggal dan cara menambahkan dan mengurangi tanggal yang berbeda.

Mendapatkan Tanggal dan Waktu dalam Format String

date($ format, $ timestamp) adalah salah satu fungsi tanggal dan waktu yang paling umum digunakan di PHP. Dibutuhkan format output yang diinginkan untuk tanggal sebagai parameter pertama dan integer sebagai nilai timestamp yang perlu dikonversi ke format tanggal yang ditentukan. Parameter kedua adalah opsional, dan mengabaikannya akan memberikan output tanggal dan waktu saat ini dalam format string berdasarkan nilai $format.

Parameter $format menerima serangkaian karakter sebagai nilai yang valid. Beberapa karakter ini memiliki arti langsung: Y memberi Anda representasi numerik penuh tahun dengan 4 digit (2018), dan y hanya memberi Anda dua digit terakhir dari tahun berjalan (18). Demikian pula, H akan memberi Anda jam dalam format 24-jam dengan nol di depan, tetapi h akan memberi Anda jam dalam format 12-jam dengan nol di depan.

Berikut adalah beberapa karakter format tanggal yang paling umum dan nilainya.

KarakterMaknaContoh
d hari dalam bulan dengan nol terkemuka 03 atau 17
j hari dalam bulan tanpa awalan nol 3 atau 17
D hari dalam seminggu sebagai singkatan tiga huruf Mon
l hari penuh dalam seminggu Senin
m bulan sebagai angka dengan angka nol di depan 09 atau 12
n bulan sebagai angka tanpa awalan nol 9 atau 12
M bulan sebagai singkatan tiga huruf Sep
F bulan penuh September
y tahun dua digit 18
Y setahun penuh 2018

Ada banyak karakter khusus lainnya untuk menentukan output untuk fungsi date(). Sebaiknya lihat tabel karakter format dalam dokumentasi fungsi date() untuk informasi lebih lanjut tentang special case.

Mari kita lihat beberapa contoh praktis dari fungsi date() sekarang. Kita dapat menggunakannya untuk mendapatkan tahun sekarang, bulan ini, jam saat ini, dll., Atau kita dapat menggunakannya untuk mendapatkan string tanggal lengkap.

<?php

// Output — 2018
echo date('Y');

// Output — September 2018
echo date('F Y');

// Output — 13 September, 2018
echo date('d F, Y');

// Output — 13 September, 2018 (Thursday)
echo date('d F, Y (l)');

Anda juga dapat menggunakan fungsi date() untuk menampilkan waktu. Berikut adalah beberapa karakter format waktu yang paling sering digunakan:

KarakterMaknaContoh
g jam dalam format 12 jam tanpa awalan nol 1 atau 12
h jam dalam format 12 jam dengan nol di depan 01 atau 12
G jam dalam format 24 jam tanpa awalan nol 1 atau 13
H jam dalam format 24 jam dengan nol di depan 01 atau 13
a am/pm dalam huruf kecil am
A am/pm dalam huruf besar AM
i menit dengan nol di depan 09 atau 15
s detik dengan nol di depan 05 atau 30

Dan berikut adalah beberapa contoh keluaran string time yang terformat.

// Output — 11:03:37 AM
echo date('h:i:s A');

// Output — Thursday, 11:04:09 AM
echo date('l, h:i:s A');

// Output — 13 September 2018, 11:05:00 AM
echo date('d F Y, h:i:s A');

?>

Penting juga bahwa Anda lepas dari karakter khusus ini jika Anda ingin menggunakannya di dalam string date Anda.

<?php

// Output — CEST201813am18 1115 Thursday.
echo date('Today is l.');

// Output — Today is Thursday.
echo date('\T\o\d\a\y \i\s l.');

// Output — Today is Thursday.
echo 'Today is '.date('l.');

?>

Dapatkan stempel waktu Unix

Terkadang, Anda perlu mendapatkan nilai cap waktu Unix saat ini dalam PHP. Ini sangat mudah dengan bantuan fungsi time(). Ini mengembalikan nilai integer yang menggambarkan jumlah millisexonds yang telah berlalu sejak 1 Januari 1970 pada tengah malam (00:00:00) GMT.

Anda juga dapat menggunakan fungsi ini untuk bolak-balik pada waktunya. Untuk melakukannya, yang harus Anda lakukan hanyalah mengurangi jumlah detik yang tepat dari nilai time() saat ini dan kemudian mengubah nilai yang dihasilkan menjadi string tanggal yang diinginkan. Berikut dua contoh:

<?php

$ten_days_later = time() + 10*60*60*24;
// Output — It will be Sunday 10 days later.
echo 'It will be '.date('l', $ten_days_later).' 10 days later.';

$ten_days_ago = time() - 10*60*60*24;
// Output — It was Monday 10 days ago.
echo 'It was '.date('l', $ten_days_ago).' 10 days ago.';

?>

Satu hal penting yang harus Anda ingat adalah bahwa nilai timestamp yang dikembalikan oleh time() adalah zona waktu agnostik dan mendapat jumlah detik sejak 1 Januari 1970 pada 00:00:00 UTC. Ini berarti bahwa pada titik waktu tertentu, fungsi ini akan mengembalikan nilai yang sama di AS, Eropa, India, atau Jepang.

Cara lain untuk mendapatkan timestamp untuk tanggal tertentu adalah menggunakan fungsi mktime($hour, $minute, $second, $month, $day, $year). Ketika semua parameter dihilangkan, fungsi ini hanya menggunakan tanggal dan waktu lokal saat ini untuk menghitung nilai timestamp. Fungsi ini juga dapat digunakan dengan date() untuk menghasilkan string tanggal dan waktu yang berguna.

<?php

$some_time = mktime(1, 1, 1, 12, 3, 1994);
// Output — It was Saturday on 03 December, 1994.
echo 'It was '.date('l', $some_time).' on '.date('d F, Y', $some_time).'.';

?>

Pada dasarnya, time() dapat digunakan untuk bolak-balik ke suatu periode waktu, sementara mktime() berguna ketika Anda ingin pergi ke suatu titik waktu tertentu.

Mengkonversi Datetime String ke Timestamp

Fungsi strtotime ($time, [$now = time()]) akan sangat membantu ketika Anda ingin mengonversi nilai tanggal dan waktu yang berbeda dalam format string ke timestamp. Fungsi ini dapat mem-parse hampir semua jenis string datetime ke timestamp.

Anda pasti harus memeriksa valid time formats, date formats, compound datetime formats, dan relative datetime formats.

Dengan relative datetime format, fungsi ini dapat dengan mudah mengkonversi string yang umum digunakan menjadi nilai timestamp yang valid. Contoh berikut membuatnya jelas:

<?php

$some_time = strtotime("10 months 15 days 10 hours ago");
// Output — It was Sunday on 29 October, 2017 03:16:46.
echo 'It was '.date('l', $some_time).' on '.date('d F, Y h:i:s', $some_time).'.';

$some_time = strtotime("next month");
// Output — It is Saturday on 13 October, 2018 01:18:05.
echo 'It is '.date('l', $some_time).' on '.date('d F, Y h:i:s', $some_time).'.';

$some_time = strtotime("third monday");
// Output — Date on the third monday from now will be 01 October, 2018.
echo 'Date on the third monday from now will be '.date('d F, Y', $some_time).'.';

$some_time = strtotime("last day of November 2021");
// Output — Last day of November 2021 will be Tuesday.
echo 'Last day of November 2021 will be '.date('l', $some_time).'.';

?>

Menambahkan, mengurangi dan membandingkan tanggal

Ini mungkin untuk menambah dan mengurangi jangka waktu tertentu ke dan dari tanggal. Ini dapat dilakukan dengan bantuan fungsi date_add() dan date_sub(). Anda juga dapat menggunakan fungsi date_diff() untuk mengurangi dua tanggal dan menampilkan perbedaan di antara itu dalam beberapa tahun, bulan, dan hari, atau yang lain.

Secara umum, lebih mudah untuk melakukan aritmatika tanggal dan waktu terkait dalam gaya berorientasi objek dengan kelas DateTime daripada melakukannya secara prosedural. Kita akan mencoba kedua style ini di sini, dan Anda dapat memilih mana yang paling Anda sukai.

<?php

$present = date_create('now');
$future = date_create('last day of January 2024');
$interval = date_diff($present, $future);
// Output — 05 years, 04 months and 17 days
echo $interval->format('%Y years, %M months and %d days');

$present = new DateTime('now');
$future = new DateTime('last day of January 2024');
$interval = $present->diff($future);
// Output — 05 years, 04 months and 17 days
echo $interval->format('%Y years, %M months and %d days');

?>

Ketika menggunakan DateTime::diff(), objek DateTime di mana metode diff() dipanggil dikurangkan dari objek DateTime yang diteruskan ke metode diff(). Ketika Anda menulis kode procedural style, parameter tanggal pertama dikurangi dari parameter tanggal kedua.

Baik fungsi dan metode mengembalikan objek DateInterval() yang mewakili perbedaan antara dua tanggal. Interval ini dapat diformat untuk memberikan output spesifik menggunakan semua karakter yang tercantum dalam format() method documentation.

Perbedaan antara gaya berorientasi objek dan prosedural gaya menjadi lebih jelas ketika mengurangi atau menambahkan interval waktu.

Anda dapat memberi contoh objek DateTime baru menggunakan DateTime() Constructor. Demikian pula, Anda dapat instantiate objek DateInterval menggunakan DateInterval() constructor. Ini menerima string sebagai parameternya. String interval dimulai dengan P, yang menandakan periode. Setelah itu, Anda dapat menentukan setiap periode menggunakan nilai integer dan karakter yang ditetapkan untuk periode tertentu. Anda harus memeriksa DateInterval documentation untuk lebih jelasnya.

Berikut ini contoh yang menggambarkan betapa mudahnya menambah atau mengurangi tanggal dan waktu dalam PHP.

<?php

$now = new DateTime('now');
$the_interval = new DateInterval('P20Y5M20D');
$now->add($the_interval);

// Output — It will be Saturday, 05 March, 2039 after 20 years, 05 months and 20 days from today.
echo 'It will be '.$now->format('l, d F, Y').' after '.$the_interval->format("%Y years, %M months and %d days").' from today.';

$now = date_create('now');
$the_interval = date_interval_create_from_date_string('20 years 05 months 20 days');
date_add($now, $the_interval);

// Output — It will be Saturday, 05 March, 2039 after 20 years, 05 months and 20 days from today.
echo 'It will be '.$now->format('l, d F, Y').' after '.$the_interval->format("%Y years, %M months and %d days").' from today.';

?>

Anda juga dapat membandingkan tanggal dalam PHP menggunakan operator perbandingan. Ini dapat berguna setiap sekarang dan kemudian. Mari buat penghitung hari Natal menggunakan operator perbandingan dan metode DateTime lainnya.

<?php

$now = new DateTime('today');
$christmas = new DateTime('25 December 2018');

while($now > $christmas) {
    $christmas->add(new DateInterval('P1Y'));
}

if($now < $christmas) {
    $interval = $now->diff($christmas);
    echo $interval->format('%a days').' until Christmas!';
}

if($now == $christmas) {
    echo 'Merry Christmas :)';
}

// Output — 103 days until Christmas!

?>

Kita mulai dengan membuat dua objek DateTime untuk menyimpan waktu sekarang dan tanggal Natal tahun ini. Setelah itu, kita menjalankan while loop untuk terus menambahkan 1 tahun ke tanggal Natal 2018 hingga tanggal sekarang kurang dari tanggal Natal. Ini akan sangat membantu ketika kode berjalan pada 18 Januari 2024. Loop sementara akan menaikkan tanggal Natal asalkan kurang dari tanggal sekarang pada saat menjalankan skrip ini.

Penghitung hari Natal kita sekarang akan bekerja selama beberapa dekade mendatang tanpa masalah.

Pemikiran Akhir

Dalam tutorial ini, kita belajar cara menampilkan tanggal dan waktu saat ini dalam format yang diinginkan menggunakan fungsi date(). Kita juga melihat bahwa date() juga dapat digunakan untuk hanya mendapatkan tahun sekarang, bulan, dan seterusnya. Setelah itu, kita belajar cara mendapatkan timestamp saat ini atau mengonversi string DateTime yang valid menjadi timestamp. Terakhir, kita belajar bagaimana menambah atau mengurangi jangka waktu dari tanggal yang berbeda.

Saya sudah mencoba untuk menutupi fungsi dan metode key DateTime di sini. Anda pasti harus melihat dokumentasi untuk membaca tentang fungsi yang tidak dibahas dalam tutorial. Jika Anda memiliki pertanyaan, jangan ragu untuk memberi tahu saya di komentar.