Memahami Fungsi Date Time Function pada PHP
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.
2. 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()
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
3. 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, 01 November 2022
Biasanya format tanggal yang kita gunakan adalah:
Selasa, 01 November 2022
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.
4. 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
ada 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
Tidak ada komentar
Posting Komentar