1

Topic: Manipulasi waktu di webserver luar dgn PHP

bagi temen2 yang hosting websitenya di Web Server Luar dari Indonesia seperti di www.000webhost.com  dan yang lainnya.,  mungkin akan mengalami permasalahan dengan setting waktu,  waktu tidak ditampilkan sesuai dengan waktu yang ada di Indonesia. Misalnya ketika mencoba menampilkan waktu dengan perintah berikut

$waktu = mktime(date("G"), date("i"), date("s"), date("n"), date("j"), date("Y"));
 echo 'Waktu sekarang: '.date("H:i:s", $waktu);

Misalnya jam di Indonesia menunjukkan pukul 11:22, ternyata dengan script diatas waktu yang ditampilkan adalah:

Waktu sekarang: 22:22:00

Karena server www.000webhost.com terdapat di US, maka perbedaan waktu yang terjadi adalah waktu US lebih lambat 13 jam.


gimana suapaya script PHP kita dapat menampilkan waktu yang sesuai dengan di Indonesia?

pertama, kita cari perbedaan waktu antara waktu di server dengan waktu GMT (Greenwich Mean Time), yaitu GMT - 6. Kemudian kita lakukan perhitungan berdasarkan angka perbedaan tersebut sehingga kita dapatkan waktu GMT.

kedua, setelah kita dapatkan waktu GMT, kita lakukan perhitungan berdasarkan perbedaan waktu antara waktu GMT dengan waktu di Indonesia, yaitu GMT + 7, sehingga kita dapatkan waktu Indonesia.

untuk lebih jelasnya, silakan melihat contoh script PHP untuk menampilkan waktu yang sesuai dengan waktu di Indonesia:

// Ambil waktu server terkini
 $dat_server = mktime(date("G"), date("i"), date("s"), date("n"), date("j"), date("Y"));
 echo 'Waktu server (US): '.date("H:i:s", $dat_server).'<br />';
 // Ambil perbedaan waktu server dengan GMT
 $diff_gmt = substr(date("O",$dat_server),1,2);
 // karena perbedaan waktu adalah dalam jam, maka kita jadikan detik
 $datdif_gmt = 60 * 60 * $diff_gmt;
 // Hitung perbedaannya
 if (substr(date("O",$dat),0,1) == '+') {
 $dat_gmt = $dat_server - $datdif_gmt;
 } else {
 $dat_gmt = $dat_server + $datdif_gmt;
 }
 echo 'Waktu GMT: '.date("H:i:s", $dat_gmt).'<br />';
 // Hitung perbedaan GMT dengan waktu Indonesia (GMT+7)
 // karena perbedaan waktu adalah dalam jam, maka kita jadikan detik
 $datdif_id = 60 * 60 * 7;
 $dat_id = $dat_gmt + $datdif_id;
 echo 'Waktu Indonesia (Asia/Jakarta): '.date("H:i:s", $dat_id).'<br />';

tampilan setelah di jalankan

Waktu server: 22:36:27
Waktu GMT: 04:36:27
Waktu Indonesia (Asia/Jakarta): 11:36:27

semoga tulisan ini bermanfaat smile

2

Re: Manipulasi waktu di webserver luar dgn PHP

nice.. big_smile
kalo buat mysql nya berlaku ga ya big_smile
secara kan default waktu mysql nya itu ngikutin mesin.
kalo di mysql itu : NOW()

gmana tuh ?
bisa di akalin ga ya smile

3

Re: Manipulasi waktu di webserver luar dgn PHP

hemstar7 wrote:

nice.. big_smile
kalo buat mysql nya berlaku ga ya big_smile
secara kan default waktu mysql nya itu ngikutin mesin.
kalo di mysql itu : NOW()

gmana tuh ?
bisa di akalin ga ya smile

mungkin bisa pke explode() bro big_smile

4

Re: Manipulasi waktu di webserver luar dgn PHP

bukan itu mksdnya..

jika di PHP pake  :

date("y-m-d h:i:s")

nah kalo di mysql :
NOW() <-- outpunya tahun-bulan-hari jam:menit:detik

contoh :
OS kita bertanggal :
2010-11-19 19:30:21

kalo di PHP akan mengikuti mesin jika :
pake date("y-m-d h:i:s")
begitu juga di mysql..

tapi.. jika kita menggunakan coding di atas .. maka di mysql menggunakan :
INSERT into waktu (waktuskrg) VALUES ('$waktu_indonesia);

lalu mari kita pake perintah outputnya di MySQL :
<?php

$q = mysql_query("SELECT TIMESTAMPDIFF(SECOND,'$waktu_indonesia',NOW()) as waktu");
$tampilkan_waktu = mysql_fetch_array($q);
echo 'waktu di PHP : '.$waktu_indonesia.'<br> waktu di mysql : '.$tampilkan_waktu['waktu'];
?>

sad pasti slalu ga sama.

5

Re: Manipulasi waktu di webserver luar dgn PHP

brarti gak usah pake now() smile)