使用Zend_Date在视图中显示特定于时区的日期

时间:2010-08-17 22:50:22

标签: php zend-framework timezone date

我将所有日期都以ISO格式存储,所以它们都是这样的:

2010-08-17T12:47:59+00:00

现在,当我的应用程序启动时,我会注册当前用户所在的时区。就我而言,这将是“Europe / Berlin”:

date_default_timezone_set("Europe/Berlin");

但是,当Zend_Date解析ISO日期时,它会覆盖之前设置的默认时区,现在具有UTC时区。

但是当我在视图脚本中输出这个日期时,我希望它以正确的时区显示日期。

除了为此编写自定义视图助手之外,还有更好的解决方案吗? (如果这是正确的解决方案,那么不应该有“DateViewHelper”吗?)

1 个答案:

答案 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();