[英]PHP DateTime Format does not respect timezones?
所以我有以下代碼:
$timezone = new DateTimeZone('America/New_York');
$datetime = new DateTime(date('r', 1440543600), $timezone);
echo $datetime->format('l, F j, Y - h:i A e');
這輸出如下:
2015年8月25日星期二 - 晚上11:00 +00:00
你會認為它會輸出:
2015年8月25日星期二 - 07:00 PM -04:00
如何使用設置的時區正確輸出格式?
閱讀DateTime::__construct()
的文檔,其中第二個參數說明:
注意:當$ time參數是UNIX時間戳(例如@ 946684800)或指定時區(例如2010-01-28T15:00:00 + 02:00)時,將忽略$ timezone參數和當前時區。
基於此,在使用unix時間戳創建時,在DateTime對象上設置時區:
$timezone = new DateTimeZone('America/New_York');
$datetime = new DateTime('@1440543600');
$datetime->setTimezone($timezone);
我認為問題不在於您輸出日期的方式,而在於您輸入日期的方式。 'r'格式選項包括時間偏移。
如果使用沒有偏移量的字符串創建DateTime對象,則將獲得預期結果。
$timezone = new DateTimeZone('America/New_York');
$datetime = new DateTime("2015-08-20 01:24", $timezone);
echo $datetime->format('l, F j, Y - h:i A e');
$datetime->setTimezone(new DateTimeZone('America/Chicago'));
echo "\n";
echo $datetime->format('l, F j, Y - h:i A e');
/* outputs
Thursday, August 20, 2015 - 01:24 AM America/New_York
Thursday, August 20, 2015 - 12:24 AM America/Chicago
*/
請看這里的例子。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.