Pada kesempatan kali ini kita akan 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). Fungsi ini telah dibahas lengkap pada artikel: Memahami Fungsi Date Pada PHP
I. 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:
<?php
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.
1 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:
<?php
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:
<?php
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 kita, di Indonesia, cukup menghafal format diatas.
Untuk daftar lengkapnya dapat dilihat di: http://php.net/manual/en/function.date.php
2 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 kita ingin menampilkan tanggal dan waktu selain tanggal dan waktu sekarang, misal kita memiliki tanggal dari database sebagai berikut: ‘2017-01-20 16:05:55’, selanjutnya kita ubah formatnya menjadi:
<?php
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, kita membuat timestamp menggunnakan fungsi strtotime.
Pada PHP, setidaknya ada dua fungsi yang dapat digunakan untuk membuat timestamp, yaitu strtotime()
dan mktime()
, keduanya diabahas lengkap pada artikel: Memahami Fungsi Time, Strtotime, dan Mktime Pada PHP – Memanipulasi Waktu
Dengan strtotime, kita 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
II. Menampilkan Tanggal dan Waktu Bahasa Indonesia Pada PHP
Sejauh ini, kita telah dapat menampilkan tanggal dan waktu pada PHP, namun demikian, nama hari dan bulan yang ditampilkan masih berbahasa Inggris.
Untuk mengubahnya ke dalam Bahasa Indonesia, kita tidak dapat menggunakan karakter date, karena karakter date hanya menyediakan tanggal berbahasa Inggris, untuk itu, kita harus membuat cara tersendiri.
Untuk menampilkan tanggal dan waktu dalam Bahasa Indonesia, kita harus mendefinisikan nama hari dan bulan secara manual, disamping itu, kita tidak dapat menggunakan fungsi date, pembahasan lengkapnya dapat dibaca di: Format Tanggal Indonesia Dengan PHP
III. Zona Waktu atau Time Zone
Ketika berhubungan dengan tanggal dan waktu pada PHP, kita harus selalu memperhatikan zona waktu, karena bagi kita 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.
<?php
// 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:
<?php
echo date_default_timezone_get(); // Europe/Berlin
Untuk mengubah timezone ini, dapat menggunakan fungsi date_default_timezone_set()
<?php
// 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
Lebih jauh tentang timezone dapat dibaca pada artikel: Memahami Zona Waktu (Timezone) dan Selisih Waktu Pada PHP
IV. Menampilkan Tanggal dan Waktu Pada PHP – OOP
Sejauh ini kita menampilkan tanggal dan waktu dengan model procedural style. Jika kita 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:
<?php
$date = new DateTime();
echo $date->format('d-m-Y : H:i:s'); // 21-01-2017 05:28:15 - Waktu sekarang
Pada contoh diatas, kita 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 bernilaiNULL
1 Argumen $time
Argumen $time
hanya digunakan jika kita ingin menampilkan tanggal dan waktu selain tanggal dan waktu sekarang, atau ketika kita akan mengisikan argumen kedua. Contoh:
<?php
$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:
<?php
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
2 Argumen $timezone
Argumen timezone ini digunakan untuk mendefinisikan timezone khusus pada objek DateTime yang sedang digunakan
Contoh:
<?php
$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:
<?php
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
V. Penutup
Untuk menampilkan tanggal dan waktu pada PHP, cara paling mudah adalah menggunakan fungsi date()
, karena hanya perlu menulis satu baris kode (satu statement).
Pada prinsipnya, fungsi date hanya menampilkan waktu sesuai dengan format yang diinginkan. Kuncinya adalah pada argumen kedua (timestamp), jika argumen kedua kosong, maka akan ditampilkan tanggal dan waktu sekarang.
Mulai PHP versi 5.3.0 terdapat class DateTime
yang begitu powerful untuk mengelola tanggal dan waktu, selain menampilkan tanggal dan waktu, class ini memiliki kemampuan memanipulasi waktu termasuk mencari selisih antara dua waktu.
Demikian pembahasan tentang cara menampilkan tanggal dan waktu pada PHP, semoga bermanfaat.
Artikel terkait:
- Memahami Fungsi Date Pada PHP
- Memahami Fungsi Time, Strtotime, dan Mktime Pada PHP – Memanipulasi Waktu
- Memahami Zona Waktu (Timezone) dan Selisih Waktu Pada PHP
- Format Tanggal Indonesia Dengan PHP
- Menghitung Selisih Waktu Dengan PHP – Cara Termudah
Subscibe Now
Suka dengan artikel di Jagowebdev.com? jangan sampai ketinggalan, segera join ke milis kami untuk update informasi terbaru dari Jagowebdev.com
36 Feedback dari pembaca
Kalu pakai function date(”) tidak bisa pakai PHP ya Pak?
Terus gimana pak? kasih tutorialnya dong
Bisa mas, sudah dibahas diatas, misal date(d-m-Y). Fungsi ini harus ada argumennya tidak boleh kosong
jika kosong bagaimana Pak
Ngga bisa mas, harus ada isinya, kalau ngga ada isinya akan error: Warning: date() expects at least 1 parameter, 0 given
Saya ingin tanya soal program PHP, tapi lewat sms atau facebook bisakah?
Lewat email saja mas…
Saya mau menanyakan sesuatu lagi tapi webnya error 404 terus kalau di submit…
Dicoba lagi mas…
Untuk menjumlahkan angka yang formatnya number gimana ?
Maksudnya bagaimana ya mbak?
Secara umum, untuk menjumlahkan angkan menggunakan operator +
Makasih mas, ilmu nya sangat bermanfaat
Izin coba .
saya sangat suka
mau tanya gan, gimana yaa untuk menampilkan siang dan malam sesuai waktu nya, misal jam 13.00 kalau di dunia nyata kan masuk siang, dan kalau 19.00 di dunia nyata kan masuk malam,
nah gimana cara bisa mengatur waktu siang dan malamnya berdasarkan waktunya, tolong bantaunnya
Coba menggunakan if mbak:
Misal
terima kasih banyak bapak (y)
Sama sama mbak…
selamat siang mas agus, saya mau tanya kl menampilkan data berdasarkan tanggal dan jam saat ini
dengan format tanggal (Y-m-d H:i:s) di mysql
misalnya ada data
1. 2019-03-19 08:30
2. 2019-03-19 10:00
3. 2019-03-19 15:00
jam tgl dan jam saat ini 2019-03-19 09:00
berarti yg nampil 2019-03-19 08:30
saya pke php
Bisa pakai fungsi date mas, misal:
Cara setting tgl pake type data date, tp ingin tgl kemarin aja gmn ? Jadi user tdk bisa setting tgl bsok. Hanya bisa setting tgl kmrin saja
Tinggal dibuat kondisi mas, jika tanggal > dari tanggal kemarin maka munculkan pesan error
Merubah tanggal yang beda 1 hari gmna y mas?
Maksdunya bagaimana ya mas…
Izin Mas ingin bertanya
Gimana ya Mas cara membuat hitungan kekurangan jam kerja.
misalnya ; Pegawai A datang jam 08:00, harusnya pulang nya jam 16:30, )karena lama waktu bekerja 8 jam 30 menit).
Klu seandainya pegawai tersebut pulang jam 16:15, Gimana ya mas buat keterangan waktu kerja kurang : 15 menit
Itu mungkin bisa dibuat durasinya dulu mas, misal waktu kerja 8 jam, kemudian hitung selisih jam antara jan 08:00 dengan 16:15. Coba baca ini Menghitung Selisih Waktu Dengan PHP – Cara Termudah
terima kasih informasinya Pak. 🙂
Sama sama mas…
gimana cara filtering data tapi type data timestamp pak
Maksudnya mas?
Mas gimana caranya filter data yang ada di database supaya muncul sesuai dengan tanggal/bulan/ tahun yang kita pilih
Mohon bantuannya mas
Bisa menggunakan klausa WHERE mas, SELECT … WHERE tgl = “kolom_tgl”;
mantab, izin comot ilmunya mas.
Siap, silakan mas
Pak saya butuh bantuannya anda saya kan mau backup database yg sudah rusak
Jadi ada transaction Dari bulan January sampai Augustus
Jadi saya mau input ulang semua transactions untuk menyesuaikan tanggalnya
Apakah bisa dengan hanya mengganti jam Di komputer server ?
Misal ya saya buat Transaksi untuk bulan January
Tergantung proteksi di aplikasi nya mas
siang pak,
untuk data excel format date sudah tersolusi dg date_format($xx, “Y-m-d”), yg jadi pertanyaan gimana solusi untuk data excel dg format time.. excel reader saya menggunakan spout. saya sudah coba echo tp tidak terbaca.
terima kasih pak.
Bisa coba di cek di dokumentasinya di spot mas. Bisa coba di print_r() dulu pada row nya jadi terlihat data kolom nya seperti apa