2011-07-21 73 views
0

當服務器上的時間超出12小時時,可能會發生什麼?我在一個朋友的網站上工作,並注意到,雖然服務器在我們的時區,但在向DB寫入記錄時,我們已經晚了12個小時。所以,我不喜歡這樣的檢查:時區問題

<?php echo(gmstrftime("It is %a on %b %d, %Y, %X time zone: %Z",time())); 
    phpinfo(); 
?> 

結果:

It is Thu on Jul 21, 2011, 04:46:46 time zone: GMT 
... 

date 

date/time support enabled 

"Olson" Timezone Database Version 2010.15 

Timezone Database internal 

Default timezone Pacific/Auckland 


Directive Local Value Master Value 

date.default_latitude 31.7667 31.7667 

date.default_longitude 35.2333 35.2333 

date.sunrise_zenit 90.583333 90.583333 

date.sunset_zenith 90.583333 90.583333 

date.timezone Pacific/Auckland Pacific/Auckland 

要問你能看到,PHP報告上午04時46分。這真的是下午4:46。它將GMT報告爲時區,但PHPinfo報告太平洋/奧克蘭爲時區(GMT + 12)。

我問網絡主機發生了什麼事。他們不確定,因爲該系統的時間是正確的。 而且沒有其他的php.ini文件被引入。

想法?

+0

什麼是「時區:GMT」之後的「...」?你要留下什麼東西嗎? – tehvan

+0

問:什麼是數據庫,當您爲數據庫調用「getdate()」(或等價物)時會得到什麼。關於PHP可能仍然是罪魁禍首,請看這裏的問題reconconciling date.default_timezone,$ TZ和date.timezone,:http://www.php.net/manual/en/function.date-default-timezone- get.php – paulsm4

+0

DB是MySQL,時間函數剛剛返回「system」。 引發這次狩獵的軟件是Joomla ......我懷疑這是誤操作時間。 – Onyx

回答

1

gmstrftime報告GMT時間,這看起來是正確的。 您需要strftime才能獲得本地(AKL)時間。 php.ini可能將其時區設置爲AKL,這也是正確的。 正確的問題是「什麼是strftime(或任何其他PHP當前時間函數)報告?」

+0

非常感謝,這是正確的...它有助於使用正確的功能! strftime正確報告NZST。 – Onyx

0

gmstrftime就其性質在格林尼治標準時間報告時間。這就是gm的用途。 :)

+0

Woops我應該提供一個鏈接。這裏你去:http://php.net/manual/en/function.gmstrftime.php。 –

+0

謝謝......它有助於使用正確的功能;) – Onyx