This post is also available in:
English
Hallo teman teman semua, kembali lagi bersama teman ngoding. Semoga teman semua sehat dan sukses selalu. Kali ini kita akan membahas cara menggunakan format tanggal dan waktu menggunakan bahasa pemrograman PHP. Format tanggal ini sangat penting ketika teman semua membuat suatu aplikasi atau website. karena sering digunakan untuk menghitung waktu atau hanya ingin menunjukan waktu. PHP memberikan kemudahan kepada para programmer banyak fungsi bawaan yang akan membantu kita.
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 (2022), dan y
hanya memberi Anda dua digit terakhir dari tahun berjalan (22). 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.
Karakter | Makna | Contoh |
---|---|---|
d | day of month with leading zero | 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 — 2022
echo date('Y');
// Output — Mei 2022
echo date('F Y');
// Output — 13 Mei, 2022
echo date('d F, Y');
// Output — 13 Mei, 2022 (Thursday)
echo date('d F, Y (l)');
<br>
Anda juga dapat menggunakan fungsi date()
untuk menampilkan waktu. Berikut adalah beberapa karakter format waktu yang paling sering digunakan:
Karakter | Makna | Contoh |
---|---|---|
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.
<?php
// 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 — CEST202209am22 4103 Monday.
echo date('Today is l.');
// Output — Today is Monday.
echo date('\T\o\d\a\y \i\s l.');
// Output — Today is Monday.
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.
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 Wednesday on 23 June, 2021 07:39:35.
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 Thursday on 09 June, 2022 05:39:35.
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 30 May, 2022.
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 — 01 years, 08 months and 21 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 — 01 years, 08 months and 21 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 Wednesday, 29 October, 2042 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 Wednesday, 29 October, 2042 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');
$birthday = new DateTime('11 maret 2022');
while($now > $birthday) {
$birthday->add(new DateInterval('P1Y'));
}
if($now < $birthday) {
$interval = $now->diff($birthday);
echo $interval->format('%a days').' until Birth Day!';
}
if($now == $birthday) {
echo 'Happy Birth Day :)';
}
// Output — 237 days until Birth Day!
?>
Kita mulai dengan membuat dua objek DateTime
untuk menyimpan waktu sekarang dan tanggal lahir tahun ini. Setelah itu, kita menjalankan while
loop untuk terus menambahkan 1 tahun ke tanggal Natal 2022 hingga tanggal sekarang kurang dari tanggal lahir. Ini akan sangat membantu ketika kode berjalan pada 11 Maret 2022. Loop sementara akan menaikkan tanggal Lahir asalkan kurang dari tanggal sekarang pada saat menjalankan skrip ini.
Penghitung hari Lahir kita selama beberapa dekade mendatang tanpa masalah.
Demikiran tutorial kali ini saya buat, semoga bermanfaat untuk teman ngoding semua.
Jangan lupa baca juga :