【发布时间】:2015-04-09 16:14:20
【问题描述】:
我最近才开始在 PHP 中使用 DateTime 对象,但现在我无法弄清楚。
我认为DateTime 会考虑我使用date_default_timezone_set 设置的默认时区,但显然它没有:
date_default_timezone_set('Europe/Oslo');
$str = strtotime('2015-04-12');
$date = new DateTime("@".$str);
$response['TZ'] = $date->getTimezone()->getName();
$response['OTZ'] = date_default_timezone_get();
$response['Date'] = $date->format('Y-m-d');
echo json_encode($response);
这是我得到的回复:
{
"TZ":"+00:00",
"OTZ":"Europe\/Oslo",
"Date":"2015-04-11"
}
将正确的 DateTimeZone 传递给构造函数也不起作用,因为 DateTime 在给定 UNIX 时间戳时会忽略它。 (如果我将常规日期字符串传递给构造函数,它会起作用)。
如果我这样做,日期会正确显示:
$date->setTimezone(new DateTimeZone("Europe/Oslo"));
我真的不想在每次处理约会时都传递时区,但从看起来我可能不得不传递的情况来看?
【问题讨论】:
-
如果有人想知道:
DateTime始终默认为 UTC