2012-03-16 65 views
4

我也搜索了PHP手册和StackOverflow,但还没有真正找到适合我的问题的答案。我的日期以UTC格式保存。现在如果我这样做:PHP日期时间DST

$date = new DateTime('2012-03-16 14:00:00', 'UTC'); 
$date->setTimezone('Europe/Budapest'); 

将DateTime :: setTimezone()自动设置夏时制?因此,如果我格式化字符串,它会在夏季时间输出15:00:00并且在冬季时间输出16:00:00?或者我将不得不手动设置DST?

相关问题,如果我想得到一个DST独立的UTC时间(我可以存储),以下的工作?

$date = new DateTime('now', 'UTC'); 
$date->format('Y-m-d H:i:s'); 

或更好地使用简单的gmdate('Y-m-d H:i:s')

+2

正如你很确定你有答案,为什么不试试呢? – 2012-03-16 12:00:38

+2

有些国家不使用DST。不同的PHP版本有不同的Olson数据库。 PHP 5.2和5.3中的DateTime可能存在差异。可能存在维护版本中修复的错误。我只是想确定。 – 2012-03-16 12:03:23

回答

5

你的假设是正确的。

此外,这将花费你10秒来验证你自己。

编辑:

正确的语法是:

$date = new DateTime('2012-03-16 14:00:00', new DateTimeZone('UTC')); 

关于你的第二个问题。在DateTime构造函数中传递的时区是'参考'时区。除非默认时区也设置为UTC(date_default_timezone_set),否则您仍应该调用 - > setTimeZone(new DateTimeZone('UTC'))在UTC时区中设置其格式。

下一次,请在尝试之前尝试一些更难的尝试。

+0

谢谢!你是对的,第二个参数必须是DateTimeZone对象。 – 2012-03-16 12:17:45