29 January 2013

Penulisan format waktu pada PHP

ads

Penulisan format waktu pada PHP kepada Kakak Assisten Lab BSI yang mengajar kami. Kenapa harus pake F j, Y dan G:i :-/ ..? Gimana kalo saya ganti hurufnya jadi kecil semua atau besar semua? Saya mencoba ternyata hasilnya memang berbeda. Untuk prakteknya silakan dicoba sendiri ya :* . Jawaban dari AssLab kira2 begini :
“Nanti akan saya carikan keterangan lengkapnya dulu, kalo sudah ketemu nanti di share”
Secara default format tanggal dan waktu disesuaikan dengan tatanan bahasa Inggris. Meski begitu, kita dapat mengaturnya agar enak dilihat pengunjung. Format tanggal default adlah : Month daya, Year. Dalam bahasa PHP format ini ditulis ke dalam string: F j, Y. Sebagai contoh Juli 12, 2012.
Karakteristik string untuk format tanggal dan waktu :
l (L kecil) : nama heri
F : nama bulan
j (J kecil) : tanggal
Y : nama tahun 4 digit (1998, 2000)
y : nama tahun 2 digit (98, 00)
a : am, pm
A : AM, PM
g : penunjuk jam dengan format 12 jam tanpa tambahan digit angka 0 (1-12)
G : penunjuk jam dengan format 24 jam tanpa tambahan digit angka 0 (0-23)
h : penunjuk jam dengan format 12 jam dengan digit angka 0 (01-12)
H : penunjuk jam dengan format 24 jam dengan digit angka 0 (00-23)
i : penunjuk menit dengan tambahan digit angka 0 (00-59)
s : penunjuk detik dengan tambahan digit angka 0 (00-59)
Untuk pengguna WordPress, pengaturan ini ada di halaman admin :
  1. Pada menu Settings – General Setting
  2. Pada menu Date Format (utk penulisan tanggal) dan Time Format (utk penulisan waktu) silakan pilih option Custom
  3. Lalu masukkan kode2 di atas sesuai dengan selera.
  4. Tekan tombol Save Change untuk menyimpan perubahan.
  5. Refresh halaman web Anda (F5) untuk melihat perubahan.


Ketika membuat sebuah aplikasi website, seringkali waktu yang ditunjukkan oleh server tidak sama dengan waktu client. Ini terjadi karena server terletak di zona waktu yang berbeda dengan client. Misalnya server yang berlokasi di USA, jelas berada di zona waktu yang berbeda dengan client di Indonesia.
1
echo date('d-m-Y H:i:s');
Kode PHP di atas akan menampilkan waktu aktual pada server. Jika dicoba di localhost tentu saja waktunya akan sama seperti komputer lokal, namun hasilnya bisa berbeda jika dicoba pada server web Anda. Agar hasilnya sesuai dengan waktu di komputer kita, tambahkan pengaturan zona waktu.
1
2
date_default_timezone_set('Asia/Jakarta');
echo date('d-m-Y H:i:s');
Untuk zona waktu yang lain bisa menyesuaikan.
Namun cara di atas memiliki beberapa kelemahan, terutama pada aplikasi yang menggunakan database. Selain kemungkinan terkena bug Y2K38, MySQL dan PHP memiliki pengaturan zona waktu yang terpisah. Misal kita menjalankan fungsi NOW() pada MySQL, waktu yang ditampilkan tidak sesuai dengan zona waktu kita. Selain itu, aplikasi juga membutuhkan tambahan proses setiap kali mengolah data dari field waktu pada MySQL agar sesuai dengan zona waktu kita.
Agar proses penyesuaian waktu bisa berjalan secara otomatis, kita harus mengetahui berapa selisih waktu client dengan UTC, kemudian beritahukan kepada MySQL. Pertama-tama dengan bantuan classDatetime, kita dapatkan offset (untuk menutupi selisih yang ada) dalam detik, kemudian mudah saja kita konversikan ke dalam menit dan jam.
1
2
$sekarang = new DateTime();
$menit = $sekarang -> getOffset() / 60;
Kemudian cari tau apakah offset bernilai positif atau negatif, lalu konversikan saja ke bilangan positif untuk memudahkan penghitungan.
1
2
3
4
$tanda = ($menit < 0 ? -1 : 1);
$menit = abs($menit);
$jam = floor($menit / 60);
$menit -= $jam * 60;
Gunakan fungsi sprintf untuk memformat string agar bisa diterima MySQL (format yang bisa diterima misalnya: +07:00).
1
$offset = sprintf('%+d:%02d', $tanda * $jam, $menit);
Terakhir jalankan query SET time_zone setelah mengkoneksikan aplikasi dengan database. Silakan ganti dengan koneksi database yang Anda gunakan.
1
2
3
4
mysql_connect($server, $username, $password);
mysql_select_db($database);
 
mysql_query("SET time_zone = '$offset'");
Akhirnya pengaturan zona waktu antara PHP dan MySQL telah sesuai. Berikut ini adalah gabungan kode-kode snippet di atas.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
date_default_timezone_set('Asia/Jakarta');
 
$sekarang = new DateTime();
$menit = $sekarang -> getOffset() / 60;
 
$tanda = ($menit < 0 ? -1 : 1);
$menit = abs($menit);
$jam = floor($menit / 60);
$menit -= $jam * 60;
 
$offset = sprintf('%+d:%02d', $tanda * $jam, $menit);
 
mysql_connect($server, $username, $password);
mysql_select_db($database);
 
mysql_query("SET time_zone = '$offset'");
Semoga bermanfaat... :)

http://herisusanto.com/format-penulisan-tanggal-dan-waktu-pada-php/

Penulisan format waktu pada PHP Rating: 4.5 Diposkan Oleh: kreasi

 

Top