Memahami Fungsi Date Pada PHP

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

Komitmen Kami: Kami senantiasa menghargai privasi Anda dan tidak akan membagikan identitas Anda ke pihak manapun.

8 Feedback dari pembaca

Silakan tinggalkan komentar

Newsletter

Jadilah yang pertama tahu berita terbaru dari Jagowebdev.com