我也搜索了PHP手册和StackOverflow,但还没有找到正确的答案。我的日期存储在UTC中。现在,如果我这样做:
$date = new DateTime('2012-03-16 14:00:00', 'UTC');
$date->setTimezone('Europe/Budapest');
DateTime::setTimezone()会自动设置DST吗?那么,如果我格式化字符串,它会在夏季输出15:00:00,在冬季输出16:00:00吗?还是必须手动设置夏令时?
相关问题是,如果我想获得一个独立于夏令时的UTC时间(我可以存储),以下方法可行吗?
$date = new DateTime('now', 'UTC');
$date->format('Y-m-d H:i:s');
还是最好使用简单的gmdate('Y-m-d H:i:s')
?
您的假设是正确的。
此外,这将花费你10秒来验证自己。
编辑:
正确的语法是:
$date = new DateTime('2012-03-16 14:00:00', new DateTimeZone('UTC'));
关于你的第二个问题。DateTime构造函数中传递的时区是"reference"时区。
除非默认时区也设置为UTC(date_default_timezone_set),否则您仍应调用->setTimeZone(新的DateTimeZone('UTC'))以在UTC时区中对其进行格式化。
下一次,在询问之前,试着更努力一点。