On Fri, Oct 01, 2004 at 09:55:26AM +0200, fade2blac wrote:
> Halo semua,
>
> Begini,
> Saya menyimpan format tanggal dengan tipe bigint dan data
> disimpan dalam format timestamp. Untuk itu saya buat fungsi kurang lebih
> begini (dalam PHP):
>
> function convert_date($var) {
> if(!$var) { return false;
> } elseif(ereg("-",$var)) {
> list($day,$month,$year)=explode("-",$var);
> return mktime(0,0,0,$month,$day,$year);
> } elseif(ereg("/",$var)) {
> list($day,$month,$year)=explode("/",$var);
> return mktime(0,0,0,$month,$day,$year);
> ## passing unix epoch time, returning date
> } else {
> return date("d-m-Y",(int)$var);
> }
> }
>
> Masalahnya, ternyata timestamp itu di tiap komputer ternyata
> hasilnya beda untuk tanggal yang sama. Saya coba otak-atik hingga
> saya samain biosnya antara mesin 1 dan mesin 2 tapi tetap ada perbedaan
> detik. Bahkan sudah edit /etc/adjtime untuk disamain, tetap saja beda.
>
> Masalah yang timbul adalah saat query seperti ini:
>
> select a from b where tanggal>=123 and tanggal<=456
>
> Hasil dibeda mesin, jadi beda range tanggal. Kadang lebih sehari, kadang
> kurang sehari. Saya coba fungsinya diganti menjadi gmdate() tapi
> ternyata
> - timestamp->tanggal sama
> - tanggal->timestamp beda
>
> contoh:
> convert_date('09-01-2004');
> mesin 1: hasilnya 1073624400
> mesin 2: hasilnya 1073602800
>
> Ada yang pernah ngalamin sama dan gimana ngatasinnya?
sudah coba panggil langsung mktime()-nya:
print(mktime(0, 0, 0, 1, 9, 2004));
saya coba di tiga komputer hasilnya sama.
Wardi
--
Berhenti langganan: [EMAIL PROTECTED]
Arsip dan info: http://linux.or.id/milis.php