Kode Untuk Menampilkan Tanggal dan Waktu Pada PHP
Membahas cara menampilkan tanggal dan waktu pada PHP, baik menggunakan procedural style maupun Object Oriented Programming Style.
Pada PHP, terdapat berbagai cara untuk menampilkan tanggal dan waktu, yang paling mudah dan umum digunakan adalah menggunakan fungsi date() (procedural style).
Menampilkan Tanggal dan Waktu Pada PHP – Menggunakan Fungsi Date
Pada prinsipnya, fungsi date() akan menampilkan tanggal dan waktu sesuai dengan format yang di definisikan. Format penulisannya adalah:
date(format_waktu, timestamp)
Contoh menampilkan tanggal dan waktu sekarang:
date_default_timezone_set('Asia/Jakarta'); echo date('d-m-Y H:i:s'); // Hasil: 20-01-2017 05:32:15
Kunci dari fungsi ini adalah pada argumen timestamp, jika kosong, maka akan ditampilkan tanggal dan waktu sekarang.
Argumen format_waktu
Format waktu wajib diisi. Argumen ini berbentuk string (teks). Pada argumen ini, PHP akan mengubah semua karakter date menjadi bentuk tanggal dan waktu. Contoh:
echo 'Waktu : ' . date('d-m-Y H:i:s'); // Waktu: 20-01-2017 22:01:15 echo 'Tanggal : ' . date('d.m.y'); // Tanggal: 20.01.07 echo 'Tanggal : ' . date('F j, Y'); // Tanggal: January 20, 2017
Pada contoh diatas, karakter dash (-), spasi, titik (.) , dan koma(,) bukan karakter date, sehingga oleh PHP dibiarkan apa adanya.
Jika ingin karakter date tidak diubah oleh PHP, maka karakter tersebut harus di “escape” menggunakan backslash (\), misal:
echo date('\T\a\n\g\g\a\l : d-m-Y'); // 20-01-2017
Jika tidak di escape, hasil yang kita peroleh adalah CETpm122pmFriday : 20-01-2017
Adapun yang termasuk karakter date adalah:
Karakter | Keterangan | Contoh |
---|---|---|
Hari | ||
d | Hari dalam sebulan, berbentuk 2 digit | 01 s.d 31 |
j | Hari dalam sebulan, tanpa awalan 0 | 1 s.d 31 |
N | Hari dalam seminggu, dimulai dari 1 | 1 (Senin) s.d 7 (Minggu) |
N | Hari dalam seminggu, dimulai dari 1 | 0 (Minggu) s.d 6 (Sabtu) |
Bulan | ||
m | Bulan dalam angka, diawali 0 | 01 s.d 12 |
n | Bulan dalam angka, tanpa awalan 0 | 1 s.d 12 |
M | Nama bulan dalam tiga karakter (dalam bahasa Inggris) | Jan s.d Dec |
Tahun | ||
Y | 4 Digit Tahun | Misal: 1995 atau 2018 |
y | 2 Digit Tahun | Misal: 95 atau 18 |
Jam | ||
H | Jam dengan format 24-jam, dengan awalahn 0 (dua digit jam) | 00 s.d 23 |
G | Jam dengan format 24-jam, tanpa awalan 0 | 0 atau 23 |
Menit | ||
i | Menit dengan awalan 0 (dua digit menit) | 00 s.d 59 |
Detik | ||
s | Detik dengan awalan 0 (dua digit detik) | 00 s.d 59 |
Tabel diatas hanya menampilkan karakter yang sering digunakan. Untuk format nama hari dan bulan, PHP menggunakan bahasa Inggris, sehingga Anda, di Indonesia, cukup menghafal format diatas.
Untuk daftar lengkapnya dapat dilihat di: http://php.net/manual/en/function.date.php
Argumen Timestamp
Timestamp adalah istilah untuk format waktu berupa jumlah detik sejak epoch time (1970-01-01 00:00:00), sehingga timestamp 1 berarti 1 detik sejak 1970-01-01 00:00:00 atau 1970-01-01 00:00:01, timestamp 60 berarti 1970-01-01 00:01:00, dst…
Argumen timestamp sifatnya opsional, jika tidak diisi, maka PHP akan menggunakan timestamp waktu sekarang (tanggal dan waktu yang ada di komputer server) sesuai dengan konfigurasi zona waktu.
Timestamp ini digunakan hanya ketika Anda ingin menampilkan tanggal dan waktu selain tanggal dan waktu sekarang, misal Anda memiliki tanggal dari database sebagai berikut: ‘2017-01-20 16:05:55’, selanjutnya Anda ubah formatnya menjadi:
echo date('d-m-Y', strtotime('2017-01-20 16:05:55')); // 20-01-2017 echo date('l, d F Y', strtotime('2017-01-20 16:05:55')); // Friday, 20 January 2017
Pada contoh diatas, Anda membuat timestamp menggunnakan fungsi strtotime.
Pada PHP, setidaknya ada dua fungsi yang dapat digunakan untuk membuat timestamp, yaitu strtotime() dan mktime()
Dengan strtotime, Anda dapat membuat waktu dengan berbagai kriteria, contoh:
date_default_timezone_set('Asia/Jakarta'); echo date('d-m-Y H:i:s'); // 21-01-2017 05:01:01 echo date('d-m-Y', strtotime('last day of february 2017') ); // 28-02-2017 echo date('d-m-Y', strtotime('yesterday 15:30') ); // 20-01-2017 echo date('d-m-Y', strtotime('next sunday') ); // 22-01-2017 echo date('d-m-Y', strtotime('next month') ); // 21-02-2017 echo date('d-m-Y H:i:s', strtotime('-24 hours') ); // 20-01-2017 05:01:01
Daftar string yang dapat digunakan untuk membuat waktu, dapat dibaca di: Daftar String Untuk Fungsi strtotime atau http://php.net/manual/en/datetime.formats.php
Zona Waktu atau Time Zone
Ketika berhubungan dengan tanggal dan waktu pada PHP, Anda harus selalu memperhatikan zona waktu, karena bagi Anda di Indonesia, tanggal dan waktu yang ditampilkan oleh PHP pasti berbeda dengan waktu real di komputer server.
Misal, ketika saya menjalankan fungsi date pada 20 Januari 2017 pukul 05:00, yang muncul adalah tanggal 19 Januari 2017 pukul 23:00.
// Script dijalankan pada 20-01-2017 05:10:15 echo date('d-m-Y H:i:s'); // 19-01-2017 23:10:15
Hal ini dikarenakan, php yang saya gunakan menggunakan konfigurasi zona waktu Europe/Berlin (GMT + 1) sehingga terdapat selisih 6 jam dengan waktu Indonesia (GMT + 7).
Konfigurasi ini disimpan pada file php.ini yang ada di folder php ( di saya berada di E:\xampp\php) dengan nama opsi date.timezone, atau dapat diketahui dengan menjalankan fungsi:
echo date_default_timezone_get(); // Europe/Berlin
Untuk mengubah timezone ini, dapat menggunakan fungsi date_default_timezone_set()
// Script dijalankan pada 20-01-2017 05:10:15 echo date('d-m-Y H:i:s'); // 19-01-2017 23:10:15 date_default_timezone_set('Asia/Jakarta'); echo date('d-m-Y H:i:s'); // 20-01-2017 05:10:15
Menampilkan Tanggal dan Waktu Pada PHP – OOP
Sejauh ini Anda menampilkan tanggal dan waktu dengan model procedural style. Jika Anda terbiasa dengan model OOP (Object Oriented Programming), maka, PHP juga menyediakan class yang dapat digunakan untuk menampilkan tanggal, yaitu class DateTime.
Contoh penggunaannya adalah sebagai berikut:
$date = new DateTime(); echo $date->format('d-m-Y : H:i:s'); // 21-01-2017 05:28:15 - Waktu sekarang
Pada contoh diatas, Anda memasukkan karakter date pada method format(), yaitu d, m, Y, dan H, i, s. Karakter date yang digunakan sama dengan yang digunakan pada fungsi date.
Class DateTime ini dapat menerima argumen, yaitu waktu dan timezone, format penulisannya adalah sebagai berikut:
DateTime( $time = "now", $timezone = NULL);
Penjelasan:
Argumen $time berupa string atau teks. Jika tidak diisi, maka argemen ini akan bernilai 'now', yang artinya waktu sekarang.
Argumen $timezone berupa string zona waktu. Jika tidak diisi maka argumen ini akan bernilai NULL
Argumen $time
Argumen $time hanya digunakan jika Anda ingin menampilkan tanggal dan waktu selain tanggal dan waktu sekarang, atau ketika Anda akan mengisikan argumen kedua. Contoh:
$date = new DateTime('2017-01-20 22:07:15'); echo $date->format('l, d F Y H:i:s'); // Friday, 20 January 2017 22:07:15
Sama seperti strtotime, argumen ini dapat menerima berbagai kata atau kalimat yang merujuk ke waktu tertentu, misal:
date_default_timezone_set('Asia/Jakarta'); $date = new DateTime('now'); echo $date->format('d-m-Y : H:i:s'); // 21-01-2017 05:13:03 $date = new DateTime('last day of february 2017'); echo $date->format('d-m-Y'); // 28-02-2017 $date = new DateTime('next month'); echo $date->format('d-m-Y'); // 21-02-2017 $date = new DateTime('-24 hours'); echo $date->format('d-m-Y H:i:s'); // 20-01-2017 05:13:03
Daftar string yang dapat digunakan dapat dibaca di: Daftar String Untuk Fungsi strtotime atau http://php.net/manual/en/datetime.formats.php
Argumen $timezone
Argumen timezone ini digunakan untuk mendefinisikan timezone khusus pada objek DateTime yang sedang digunakan
$date = new DateTime( 'now', new DateTimeZone('Asia/Jakarta') ); echo $date->format('H:i:s'); // 22:14:56 $date2 = new DateTime(); echo $date2->format('H:i:s'); // 16:14:56
Pada contoh diatas terlihat bahwa $date2 menggunakan konfigurasi default timezone, yang pada contoh ini adalah Europe/Berlin
Method
Class DateTime sangat fleksibel karena memiliki berbagai method yang dapat digunakan untuk memanipulasi waktu, diantaranya yang sangat berguna adalah method modify(), contoh:
date_default_timezone_set('Asia/Jakarta'); $date = new DateTime('now'); echo $date->format('d-m-Y : H:i:s'); // 21-01-2017 05:13:03 $date->modify('+1 month'); echo $date->format('d-m-Y H:i:s'); // 28-02-2017 05:13:03 $date->modify('-24 hours'); echo $date->format('d-m-Y H:i:s'); // 20-02-2017 05:13:03
Posting Komentar