2010-04-18 45 views
1

我在新墨西哥州的阿爾伯克基。每次我輸入數據庫時​​,我都會嘗試更新一些郵票。PHP時區問題

這是我使用的。

date_default_timezone_set("US/Mountain"); 
$stamp =mktime(); 
//$stamp = gmmktime(); 
$time = date("H:i:s",$stamp);$date = date("Y-m-d",$stamp); 

我的當地時間是12:15 PM,但我得到的是下午18:15。

如果你能看到發生了什麼問題,請讓我知道。

+0

你的意思是說你得到18時15分的價值'$時間',或者18:15是什麼顯示在你的數據庫? – zombat 2010-04-18 18:28:21

+1

謝謝!我需要更加細心,在應用程序插入和輸入數據庫的節點上遇到問題。我在那裏使用的時間是UTC。 – nebulus 2010-04-18 18:51:49

+0

這就是爲什麼我更願意儘可能在文本表示中保留時區信息的原因。 – VolkerK 2010-04-18 19:00:34

回答

0

「我的當地時間是12:15 PM,但我得到的是下午18:15。」
6小時...這是UTC和美國/山區之間的偏移量,當地時區18:00是12:00 UTC。
什麼

$rc = date_default_timezone_set("US/Mountain"); 
$stamp =mktime(); 
echo 'version: ', phpversion(), "\n"; 
echo 'rc=', var_dump($rc); 
echo 'stamp: ', $stamp, "\n"; 
echo 'time(): ', time(), "\n"; 
echo 'date: ', date(DateTime::ISO8601, $stamp), "\n"; 
echo 'gmdate: ', gmdate(DateTime::ISO8601, $stamp), "\n"; 

打印?

+0

版本:5.2.13 RC =布爾(真) 郵票:1271616283 時間():1271616283 日期:2010-04-18T12:44:43-0600(!AHA) gmdate:2010-04-18T18: 44:43 + 0000 難道這不是我本質上嘗試做的嗎? – nebulus 2010-04-18 18:47:19

+0

是的。輸出看起來很好。所以我現在的賭注是「你發佈的代碼不是你測試過的代碼。」 ;-) – VolkerK 2010-04-18 18:50:20

0

嘗試date_default_timezone_set(「America/Denver」);

+0

我不認爲這會有所作爲。雖然「美國/丹佛」優於「美國/山區」,但後者仍然有效(現在)。見http://www.php.net/manual/en/timezones.others.php – zombat 2010-04-18 18:31:19

+0

是否有可能使用php <5.1並且date_default_timezone_set函數不存在? – 2010-04-18 18:43:53

+0

則會發生致命的「未定義函數」。 – VolkerK 2010-04-18 18:47:05