Selasa, 27 Juli 2010

Keanehan function date pada PHP beserta solusinya

Hai, bertemu lagi dengan Mozart Jr. masih membahas tentang PHP. Saat saya membuat suatu sistem menggunakan function date(), terdapat kejanggalan yang saya temui. Untuk itu saya akan membahas masalah ini.

Function date() adalah suatu fungsi yang telah diberikan oleh Php untuk mengolah tanggal. dan waktu Pada sistem kecil, mungkin tidak terlalu memperhatikan fungsi ini. Namun, jika kita ingin membuat website yang selalu update, maka ini akan menjadi masalah besar.



Keanehan function date() sebagai berikut:

potongan script php dengan function date()


Hasil eksekusi dari script diatas dengan sistem kalender lokal

Apakah anda telah melihat keanehannya? Jika sudah berarti anda sangat peka. Namun jika belum, saya akan memberitahukan anda. Memang pada tanggal tidak terdapat keanehan, keanehan terjadi pada JAM.

Jam yang tertera pada gambar diatas,
lebih 1 jam dari jam sistem komputer saya. Maka ini akan menjadi masalah jika kita ingin mengupdate data-data penting dengan acuan pada waktu.

Lalu bagaimana pemecahan masalahnya? Mudah saja, ada dua cara yang dapat anda pilih untuk membuat function date() sesuai dengan waktu pada sistem anda.

Pertama, anda tambahkan script php date_default_timezone_set("Asia/Jakarta") pada setiap halaman yang menggunakan function date(). Seperti dibawah ini:

Gambar solusi pertama
Kedua, anda harus bermain-main dengan php.ini. Ganti date.timezone = "Asia/Jakarta" pada modul [DATE]. seperti dibawah ini:

Gambar solusi kedua

Jika telah dilakukan salah satu solusi, maka hasilnya akan nampak seperti dibawah ini:

Gambar hasil modifikasi

Untuk diketahui, pada solusi pertama dan kedua, anda berarti men-set waktu menjadi Waktu Indonesia bagian Barat (WIB). Untuk anda yang berada diwilayah yang menggunakan WITA dan WIT, maka anda harus memodifikasi sedikit function date() diatas. 
Untuk wilayah WITA, scriptnya sebagai berikut:




Untuk WIT, scriptnya sebagai berikut:





Sebenarnya, Php telah memberikan catatan jika akan menggunakan function date(). Catatannya seperti dibawah ini:

Every call to a date/time function will generate a E_NOTICE if the time zone is not valid, and/or a E_STRICT or E_WARNING message if using the system settings or the TZ environment variable. See also date_default_timezone_set()


Semoga bermanfaat. Jika ada kesalahan atau tambahan bisa sharing disini, terima kasih.

Tidak ada komentar:

Posting Komentar