Mengubah Format Timestamp PHP ke Bahasa Indonesia

Mengubah Format Timestamp PHP ke Bahasa Indonesia

Sekilas tentang PHP

Bahasa pemrograman web saat ini sudah sangat berkembang pesat. Salah satu yang cukup populer adalah PHP. PHP cukup banyak diminati selain karena mudah digunakan juga karena tersedianya banyak sumber informasi dan komunitas yang menggunakannya. Saat ini sebagian besar situs telah menggunakan PHP sebagai bahasa penyusun dalam situs tersebut. Satu diantaranya adalah blog engine WordPress. Jika anda pernah mengutak-atik file pada WordPress.org, maka anda akan menemukan seluruh halamannya menggunakan ekstensi php.

Selain itu sudah banyak programmer Indonesia yang menggunakan bahasa tersebut untuk membuat aplikasi berbasis web. PHP merupakan bahasa pemrograman web yang berada di sisi server. Berbeda dengan JavaScript yang bahasanya diterjemahkan oleh browser dan dapat dilihat oleh client. PHP pada dasarnya telah dibekali dengan banyak function yang dapat digunakan secara langsung sesuai kebutuhan penggunanya. Beberapa fungsi dasar dan penting diantaranya adalah tentang pengaturan lokasi dan waktu.

Meskipun secara default penggunaan waktu pada jaringan internet ditentukan dari waktu yang tertera pada perangkat yang digunakan. Namun lokasi dan waktu memberikan pengaruh terhadap output yang tampil.

Ketika menggunakan bahasa Indonesia pada sebuah situs web yang dibangun menggunakan bahasa php, kita perlu melakukan penyesuaian format penulisan tanggal dalam bahasa Indonesia. Sebab jika tidak diatur secara otomatis akan menggunakan bahasa Inggris. Sebagai contoh anda bisa melihat perbedaannya dari output kode berikut ini:

<?php
/* Output: Tanggal hari ini */
echo strftime("Today is %A, %e %B %Y");
?>

Dan kode berikut ini:

<?php
/* Set lokasi ke Indonesia */
setlocale(LC_TIME, 'id');
 
/* Output: Tanggal hari ini */
echo strftime("Hari ini adalah %A, %e %B %Y");
?>

Tentu hasilnya jelas berbeda. Dan inti dari perbedaannya hanya terletak pada bahasanya. Untuk mencoba menggunakan PHP anda bisa menggunakan XAMPP, pelajari lebih lanjut. Baiklah mari kita bahas lebih lanjut.

Setlocale() pada PHP

Salah satu fungsi dasar yang ada pada php adalah setlocale(). Fungsi tersebut digunakan untuk mengatur informasi lokal seperti tanggal, waktu, klasifikasi karakter dan konversi, serta simbol pemisah desimal. Meskipun pada perangkat juga ada pengaturan seperti itu namun pada situs web yang menggunakan php memerlukan perhatian tersendiri. Hasil dari fungsi tersebut akan keluar sebagai string. Bentuk dasar dari fungsi setlocale adalah:

setlocale(category, locale);

Ada dua parameter pada fungsi setlocale, yaitu parameter category dan locale. Category adalah parameter untuk kategori spesifik yang akan diatur sesuai format lokasi yang ditetapkan pada bagian locale. Selain yang telah disebutkan di atas, ada beberapa kategori lain yang bisa diatur sesuai lokasi yang diinginkan. Diantaranya adalah:
  • LC_ALL mengubah format lokasi untuk semua kategori di bawah ini
  • LC_COLLATE untuk perbadingan string, lihat strcoll()
  • LC_CTYPE untuk klasifikasi karakter dan konversi, misalnya huruf besar pada huruf i untuk bahasa Inggris yang artinya "saya", contohnya strtoupper()
  • LC_MONETARY untuk mengatur format keuangan, lihat localeconv()
  • LC_NUMERIC untuk pemisah desimal dan format numerik, juga localeconv()
  • LC_TIME untuk format tanggal dan waktu, digunakan pada strftime()
  • LC_MESSAGES untuk respon sistem, tersedia jika PHP dikompilasi dengan libintl

Itulah beberapa kategori yang dapat disesuaikan dengan menggunakan fungsi setlocale. Selain itu untuk mengetahui parameter locale yang dapat digunakan, misalnya untuk Indonesia menggunakan "id", "ID", atau "Indonesian". Ada beberapa ketentuan yang perlu anda ketahui.
  1. Jika locale NULL atau string kosong "", maka nama lokal yang ditetapkan diambil dari nilai variabel lokasi dengan nama yang sama dengan kategori di atas, atau dengan "LANG".
  2. Jika locale diisi "0", pengaturan lokal tidak akan ada pengaruhnya, hanya menampilkan hasil dari pengaturan saat ini.
  3. Jika locale adalah array, atau diikuti parameter tambahan, misalnya "id, de", maka setiap elemen array atau parameter tersebut dicoba satu per satu untuk ditetapkan sebagai lokasi baru hingga selesai. Hal ini berguna jika lokasi akses situs bisa berbeda-beda atau untuk menyediakan cadangan jika kemungkinan lokasi pertama tidak tersedia.

Pada sistem operasi Windows, setlocale (LC_ALL, "") akan menetapkan nama lokal dari pengaturan regional atau bahasa pada pengaturan Windows. Pengaturan tersebut dapat anda temukan melalui menu Control Panel.

Penggunaan strftime()

Fungsi yang satu ini merupakan fungsi lanjutan dari setlocale. Fungsi ini berguna untuk format waktu dan tanggal berdasarkan lokal yang telah ditentukan. Bulan dan hari bergantung pada bahasa lokal di fungsi setlocale().

Perlu anda ketahui tidak semua konversi lokal didukung oleh C library anda, dalam hal ini bahasa lokal tidak akan digunakan dalam fungsi strftime() PHP. Selain itu, tidak semua platform mendukung negative timestamps, sehingga rentang tanggal anda mungkin dibatasi tidak bisa lebih awal dari zaman Unix. Artinya string %e, %T, %R, dan %D (dan mungkin yang lain) serta tanggal sebelum 1 Januari 1970, tidak akan berfungsi pada sistem operasi Windows, beberapa distribusi Linux (distro), dan beberapa sistem operasi lainnya.

Parameter strftime() untuk Hari

FormatDeskripsiContoh
%aNama hari dalam tiga hurufSen, Sel, Rab
%ANama hari secara lengkapSenin, Selasa, Rabu
%dTanggal dua digit yang disertai angka 0 untuk yang kurang dari 1001 sampai 30
%eTanggal tanpa disertai angka 0 untuk yang kurang dari 101 sampai 31
%jHari ke sekian dalam satu tahun, diawali 0 selain tiga digit001 sampai 366
%uNumerik ISO-8601 representasi hari dalam sepekan dalam angka1 (untuk Senin) sampai 7 (untuk Minggu)
%wRepresentasi hari dalam sepekan seperti %u tapi dimulai dari 0 dan Minggu0 (untuk Minggu) sampai 6 (untuk Sabtu)

Parameter strftime() untuk Pekan

FormatDeskripsiContoh
%UNomor untuk pekan ke sekian dalam satu tahun13 (untuk pekan ke 13 dalam tahun ini)
%VNomor pekan tahun ini, dimulai dari pekan pertama tahun ini yang setidaknya memiliki 4 hari kerja dengan senin sebagai awal pekan01 sampai 53 (dimana 53 adalah perhitungan pekan yang tumpang tindih)
%WRepresentasi urutan pekan dalam satu tahun, dimulai dari Senin pertama dalam satu pekan23 (untuk pekan ke 23 dalam tahun ini dimulai dari Senin)

Parameter strftime() untuk Bulan

FormatDeskripsiContoh
%bNama bulan dalam tiga hurufJan, Feb, Mar
%BNama bulan secara lengkapJanuari, Februari, Maret
%hAlias dari %b yaitu nama bulan dalam 3 hurufJan sampai Des
%mDua digit nomor urutan bulan01 (untuk Januari), 02 (untuk Februari)

Parameter strftime() untuk Tahun

FormatDeskripsiContoh
%CRepresentasi dua digit dari abad ini (bilangan bulat dari pembagian tahun dibagi 100)19 untuk abad ke-20, dst
%gDua digit representasi tahun ini, standar dari ISO-8601:198809 (untuk 2009), 20 (untuk 2020)
%GDigit penuh dari tahun ini, versi lengkap dari %g2008, 2009, 2019
%yDua digit terakhir dari tahun ini09 untuk 2009, 79 untuk 1979
%YEmpat digit representasi tahun ini2021, 2038

Parameter strftime() untuk Waktu

FormatDeskripsiContoh
%HDua digit representasi dari jam dalam format 24-jam00 sampai 23
%kJam dalam format 24-jam dengan satu digit untuk yang kurang dari 100 sampai 23
%IDua digit representasi dari jam dalam format 12-jam01 sampai 12
%l (huruf L kecil)Jam dalam format 12-jam dengan satu digit untuk yang kurang dari 101 sampai 12
%MDua digit representasi dari menit00 sampai 59
%pHURUF KAPITAL dari 'AM' atau 'PM'AM untuk 00:31, PM untuk 22:23
%PHuruf nonkapital dari 'am' atau 'pm'am untuk 00:31, pm untuk 22:23
%rSama seperti "%I:%M:%S %p"Contoh: 6:30:45 PM
%RSama seperti "%H:%M"Contoh: 00:35 untuk 12:35 AM, 16:44 untuk 4:44 PM
%SDua digit representasi dari detik00 sampai 59
%TSama seperti "%H:%M:%S"Contoh: 21:34:17 untuk 09:34:17 PM
%XRepresentasi waktu yang dipilih berdasarkan lokal, tanpa tanggalContoh: 03:59:16 atau 15:59:16
%zZona waktu dalam bentuk angka berdasarkan lokal. Perubahan lokal dari setlocale() tidak berpengaruh pada Windows+0800 untuk Indonesia
%ZZona waktu dalam bentuk lokasi benua dan negara berdasarkan lokal. Perubahan lokal dari setlocale() tidak berpengaruh pada WindowsContoh: Malay Peninsula Daylight Time

Parameter strftime() untuk cap tanggal dan waktu

FormatDeskripsiContoh
%cCap tanggal dan waktu13/07/2019 00.50.22 untuk 13 Juli jam 12:50 am
%DSama seperti "%m/%d/%y"Contoh: 07/13/19 untuk 13 Juli 2019
%FSama seperti "%Y-%m-%d", banyak digunakan pada cap waktu di databaseContoh: 2019-07-13
%sStempel waktu Waktu Unix Epoch (sama dengan fungsi time ())305815200 untuk 10 September, 1979 08:40:00 AM
%xBerdasarkan representasi tanggal sesuai lokal, tanpa waktuContoh: 13/07/2019

Mengatur Zona Waktu

Selain bahasa yang digunakan dalam format waktu dan kategori locale lainnya. Zona waktu juga bisa berbeda dengan yang anda harapkan. Saat membangun situs web dengan PHP anda juga perlu mengatur format waktu yang digunakan agar cap waktu yang ditampilkan sesuai dengan zona waktu yang anda gunakan.

Untuk mengatur zona waktu yang sesuai anda bisa menggunakan fungsi date_default_timezone_set(). Bentuk umum dari fungsi ini cukup sederhana karena hanya menggunakan satu parameter. Sebagai contoh untuk zona waktu Indonesia Tengah (WITA) bisa menggunakan date_default_timezone_set("Asia/Makassar");.

Sekarang yang jadi pertanyaan adalah apa saja zona waktu yang dapat digunakan? Anda bisa melihat daftar zona waktu yang didukung pada fungsi date_default_timezone_set() pada manual PHP List of Supported Timezones. Secara lebih spesifik untuk bagian Indonesia bisa anda temukan di Zona Waktu Asia.

Penutup

Sebagai contoh anda bisa lihat pada bagian awal di atas. Jadi fungsi setlocale merupakan salah satu pengaturan awal yang cukup penting saat awal memulai membuat situs. Karena dengan mengatur kedalam format lokal isi dari situs bisa sesuai dengan pengaturan yang ditampilkannya. Terima kasih dan sampai jumpa!

Related Posts

Iklan Atas Artikel

Iklan Tengah Artikel 1

Iklan Tengah Artikel 2

Iklan Bawah Artikel