我有以下日期字符串轉換日期字符串UTC時間與PHP
$date="Sat Apr 30 2011 18:47:47 GMT+0900 (Tokyo)"
我想將它轉換爲UTC時間
$timestamp_UNIX = strtotime($date);
echo date("Y-m-d\TH:i:s\Z",$timestamp_UNIX);
爲什麼我
2011-04-30T11:47:47Z
and not
2011-04-30T09:47:47Z
我有以下日期字符串轉換日期字符串UTC時間與PHP
$date="Sat Apr 30 2011 18:47:47 GMT+0900 (Tokyo)"
我想將它轉換爲UTC時間
$timestamp_UNIX = strtotime($date);
echo date("Y-m-d\TH:i:s\Z",$timestamp_UNIX);
爲什麼我
2011-04-30T11:47:47Z
and not
2011-04-30T09:47:47Z
您應該使用gmdate()
而不是date()
(或者您可以在PHP 5.2/5.3中檢查DateTime和DateTimeZone類)
問題是您的代碼不會自動回顯UTC。無論您的默認時區設置爲何,它都會回顯時間戳。這可以通過在運行時通過date_default_timezone_set()
或通過php.ini
中的配置設置date.timezone
完成。
現代方式將使用DateTime
和DateTimeZone
類。
$d = new DateTime('Sat Apr 30 2011 18:47:47 GMT+0900 (Tokyo)');
print_r($d);
$d->setTimezone(new DateTimeZone('UTC'));
print_r($d);
打印
DateTime Object
(
[date] => 2011-04-30 18:47:47
[timezone_type] => 1
[timezone] => +09:00
)
DateTime Object
(
[date] => 2011-04-30 09:47:47
[timezone_type] => 3
[timezone] => UTC
)
您認爲php.ini文件中的默認時區是+7而不是+9嗎?無論如何,我對這個文件沒有訪問權限,這意味着每個服務器都會輸出不同的日期...我會看看date_default_timezone_set()。我與你保持聯繫 – ths1104 2011-04-30 10:55:28
默認時區最有可能與UTC的偏差爲+2小時(例如,由於夏令時,「歐洲/柏林」與UTC的距離爲2小時)。 'date_default_timezone_get()'將幫助你確定你的默認時區。 – 2011-04-30 10:59:26
什麼是你'date.timezone'預設?該值可以在'php.ini'或'date_default_timezone_set()'中設置。 – 2011-04-30 10:27:28