我将所有日期都以ISO格式存储,所以它们都是这样的:
2010-08-17T12:47:59+00:00
现在,当我的应用程序启动时,我会注册当前用户所在的时区。就我而言,这将是“Europe / Berlin”:
date_default_timezone_set("Europe/Berlin");
但是,当Zend_Date解析ISO日期时,它会覆盖之前设置的默认时区,现在具有UTC时区。
但是当我在视图脚本中输出这个日期时,我希望它以正确的时区显示日期。
除了为此编写自定义视图助手之外,还有更好的解决方案吗? (如果这是正确的解决方案,那么不应该有“DateViewHelper”吗?)
答案 0 :(得分:0)
不确定如何使用Zend_Date
,但鉴于您使用PHP> = 5.2,您可以使用内置的DateTime
类(它提供的功能更少但速度更快):
$date = new DateTime('2010-08-17T12:47:59+00:00');
$date->setTimezone(new DateTimeZone(date_default_timezone_get()));
echo $date->format(DateTime::W3C);
修改强>
刚刚检查了Zend_Date
,它实际上在这里工作相同......
$date = new Zend_Date('2010-08-17T12:47:59+00:00', Zend_Date::ISO_8601);
$date->setTimezone(date_default_timezone_get());
echo $date->getIso();