Pada kesempatan kali ini kita akan membahas fungsi date pada PHP.
Fungsi terkait tanggal (date) merupakan fungsi yang sering digunakan ketika kita mengembangkan suatu aplikasi, terutama untuk aplikasi dinamis. Untuk itu, kita perlu memahami fungsi ini dengan banar.
I. Fungsi Date Pada PHP
Fungsi date digunakan untuk menampilkan data tanggal sesuai dengan format yang diinginkan. Format penulisannya adalah sebagai berikut:
date(format_tanggal, timestamp);
Argumen kedua, yaitu timestamp
, sifatnya opsional, jika tidak didefinisikan maka akan digunakan timestamp waktu sekarang (tanggal dan waktu pada komputer server ketika script dieksekusi). Lebih jauh tentang timestamp di bahas dibagian bawah.
format_tanggal
berbentuk string (teks) yang diwakili oleh karakter tertentu yang mewakili tanggal dan waktu, sehingga, jika string tersebut mengandung karakter tersebut, maka akan langsung diterjemahkan menjadi waktu, contoh:
<?php
echo date('d-m-Y H:i:s'); // Hasil: 16-01-2017 11:51:06
Pada contoh diatas, karena spasi dan dash (-) tidak termasuk karakter date, maka dibiarkan apa adanya. Jika kita ingin karakter date tidak diterjemahkan, maka kita escape karakter tersebut dengan backslash. Misal:
<?php
echo date('\T\g\l: d-m-Y H:i:s'); // Tgl: 16-01-2017 13:47:56
Pada contoh diatas, jika tidak diescape, maka hasil yang diperoleh adalah: CET1Monday: 16-01-2017 13:49:02. Karakter date yang dapat digunakan 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.
Format tanggal dan waktu dibuat mengikuti standar Amerika, seperti penggunaan nama hari, nama bulan, penggunaan AM dan PM, dll. Sehingga, bagi kita yang tinggal di Indonesia, cukup menghafalkan tabel diatas.
Jika ingin melihat daftar lengkap karakter date, dapat dilihat di: http://php.net/manual/en/function.date.php
II. Penggunaan Timestamp
Timestamp merupakan suatu istilah yang merujuk pada waktu dengan format unix timestamp.
Format ini mendefinisikan waktu berdasarkan detik yang mengacu pada waktu tertentu, yaitu 01-01-1970 00:00:00, dengan zona waktu GMT+0.
Dengan demikian, nilai 1 pada timestamp berarti satu detik sejak 01-01-1970 00:00:00 atau 01-01-1970 00:00:01, perhatikan contoh berikut:
<?php
date_default_timezone_set('UTC');
echo strtotime("1970-01-01 00:00:01"); // Hasil 1
Jika dibalik, yaitu dengan mengisikan angka 1 pada argumen ke dua dari fungsi date(), maka akan memperoleh hasil yang sama, yaitu 1970-01-01
<?php
echo date('Y-m-d', 1); // Hasil: 1970-01-01
Terdapat dua cara untuk membuat timestamp, yaitu menggunakan fungsi strtotime()
dan mktime()
. Keduanya dibahas lebih dalam pada artikel: Memahami Fungsi Time, Strtotime, dan Mktime Pada PHP – Memanipulasi Waktu
Fungsi date dengan timestamp ini sering digunakan ketika kita ingin mengubah format tanggal dari database, yang umumnya berformat Y-m-d H:i:s, meskipun banyak cara lain yang bisa dilakukan, seperti menggunakan fungsi explode()
.
Misal: kita memiliki tabel tb_penjualan, dengan data sebagai berikut:
+------+---------------------+ | nama | tgl_trx | +------+---------------------+ | Alfa | 2017-01-16 09:10:15 | | Beta | 2017-01-18 14:18:01 | +------+---------------------+
Selanjutnya kita ingin menampilkan data tersebut dengan PHP:
<?php
$conn = mysqli_connect('localhost','root','','test');
$query = mysqli_query ($conn, 'SELECT * FROM tb_penjualan');
while($row = mysqli_fetch_array($query)) {
echo 'Nama: ' . $row['nama'] . ' Tanggal : ' . date('d/m/Y', strtotime($row['tgl_trx'])) . '<br/>';
}
Hasil:
Nama: Alfa Tanggal : 16/01/2017 Nama: Beta Tanggal : 18/01/2017
III. Format Nama Hari dan Bulan Dengan Bahasa Indonesia
Seperti telah disampaikan diawal, dalam penamaan hari dan bulan, PHP menggunakan bahasa Internasional yaitu Bahasa Inggris Amerika, seperti Sunday s.d Saturday untuk nama hari, dan January s.d. December untuk nama bulan. Misal:
<?php
echo date('l, d F Y'); // Hasil: Wednesday, 19 January 2017
Biasanya format tanggal yang kita gunakan adalah:
Kamis, 19 Januari 2017
Jika kita ingin menggunakan penamaan Bahasa Indonesia, kita tidak bisa menggunakan karakter date bawaan PHP, yang artinya kita tidak bisa menggunakan fungsi date()
, untuk itu, kita harus menggunakan cara lain, yaitu mendefinisikan sendiri nama hari atau bulan.
Pembahasan tentang hal ini dibahas lebih dalam pada artikel: Format Tanggal Indonesia Dengan PHP
IV. Timezone
Penting diperhatikan bahwa secara default, zona waktu timestamp adalah GMT + 0 atau zona waktu sesuai dengan yang didefinisikan pada file konfigurasi php.ini
.
Sedangkan kita, di Indonesia menggunakan zona waktu GMT + 7, perbedaan zona waktu ini pada jam tertentu akan mengakibatkan perbedaan tanggal. Misal, ketika fungsi date di jalankan pada pukul 00:01 dinihari s.d pukul 06.00 pagi, maka hasil yang diperoleh masih tanggal kemarin, untuk lebih jelas, bisa ditampilkan data waktunya: date(d-m-Y H:i:s)
Untuk mengatasi hal tersebut, kita perlu mengatur zona waktu menjadi Asia/Jakarta. Terdapat beberapa cara untuk melakukannya, diantaranya mendefinisikan zona waktu dengan fungsi date_default_timezone_set()
dan melalui setting pada file php.ini
Contoh pendefinisian melalui fungsi date_default_timezone_set()
adalah sebagai berikut:
date_default_timezone_set('Asia/Jakarta')
Contoh:
<?php
echo 'Default Timezone: ' . date('d-m-Y H:i:s');
date_default_timezone_set('Asia/Jakarta');
echo 'Indonesian Timezone: ' . date('d-m-Y H:i:s');
Hasil:
Default Timezone: 18-01-2017 23:21:03 Indonesian Timezone: 19-01-2017 05:21:03
Pada contoh diatas terlihat bahwa fungsi date_default_timezone_set()
hanya akan mengubah zona waktu fungsi date yang ada setelah fungsi tersebut.
Untuk mengubah zona waktu secara permanen untuk keseluruhan script, bisa dilakukan dengan mengubah setting pada file php.ini. Buka file php.ini yang ada di dalam folder php, kemudian cari kata-kata timezone, selanjutnya ganti timezone sesuai yang diinginkan, misal ‘Asial/Jakarta’:
date.timezone = Asia/Jakarta
Lebih jauh tentang timezone ini, dapat dibaca pada artikel: Memahami Zona Waktu (Timezone) dan Selisih Waktu Pada PHP
Demikian pembahasan mengenai fungsi date pada PHP, semoga bermanfaat.
Subscibe Now
Suka dengan artikel di Jagowebdev.com? jangan sampai ketinggalan, segera join ke milis kami untuk update informasi terbaru dari Jagowebdev.com
8 Feedback dari pembaca
Terima kasih utk penjelasan fungsi date dlm php.
Hanya dgn merubah nilai timezone dlm php.ini hasil waktu yg saya tampilkan bisa benar sesuai dg settingan waktu windows…
iya mas, sama sama
Jik saya ingin menamplikan data dalam satu bulan saja tanp[a terikut bulan yg sama di tahun2 sebelumnya bgaiamna ya mas?
Di klausa WHERE nya di filter tahunannya mas, misal WHERE YEAR(tgl) = 2021
kolom tanggal di database belum terisi, knapa terlihat di view web 01 01 1970 ya, mohon solusi agar 01 01 1970 menjadi kosong atau 00 00 00
Itu perlu diberi logika mas, misal:
Permisi numpang nanya kak, penggunaan ($startdate, $enddate, $d, $1, $d2), itu berfungsi sebagai apa kak?
Terima Kasih
Contohnya seperti apa ya mas?