【问题标题】:Showing timezone specific dates in views with Zend_Date使用 Zend_Date 在视图中显示时区特定日期
【发布时间】:2010-08-17 22:50:21
【问题描述】:

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

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

现在,当我的应用程序启动时,我注册了当前用户所在的时区。在我的例子中,这将是“欧洲/柏林”:

date_default_timezone_set("Europe/Berlin");

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

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

有没有比为此编写自定义视图助手更好的解决方案? (如果这是正确的解决方案,不应该已经有一个“DateViewHelper”吗?)

【问题讨论】:

    标签: php zend-framework timezone date


    【解决方案1】:

    不确定这如何与 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();
    

    【讨论】:

    • 我知道我可以在每个 Zend_Date 对象上手动设置时区,但我想知道是否有更智能的方法可以在我的视图中以正确的时区显示时间。我不想做 $this->model->dateCreated->setTimezone(date_default_timezone_get())->format(Zend_Date::DATE_MEDIUM);每次我想输出一个日期。
    • 好的 - 我明白了。据我所知,这个任务没有内置的视图助手,所以编写自己的应该是要走的路。
    猜你喜欢
    • 1970-01-01
    • 2023-04-01
    • 2017-08-25
    • 1970-01-01
    • 2021-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多