Header Ads

  • Breaking News

    Memahami Fungsi Date Time Function pada PHP


    Sepriano, M.Kom - 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.

    1. 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:

    KarakterKeteranganContoh
    Hari
    dHari dalam sebulan, berbentuk 2 digit01 s.d 31
    jHari dalam sebulan, tanpa awalan 01 s.d 31
    NHari dalam seminggu, dimulai dari 11 (Senin) s.d 7 (Minggu)
    NHari dalam seminggu, dimulai dari 10 (Minggu) s.d 6 (Sabtu)
    Bulan
    mBulan dalam angka, diawali 001 s.d 12
    nBulan dalam angka, tanpa awalan 01 s.d 12
    MNama bulan dalam tiga karakter (dalam bahasa Inggris)Jan s.d Dec
    Tahun
    Y4 Digit TahunMisal: 1995 atau 2018
    y2 Digit TahunMisal: 95 atau 18
    Jam
    HJam dengan format 24-jam, dengan awalahn 0 (dua digit jam)00 s.d 23
    GJam dengan format 24-jam, tanpa awalan 00 atau 23
    Menit
    iMenit dengan awalan 0 (dua digit menit)00 s.d 59
    Detik
    sDetik 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

    Post Bottom Ad