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