【问题标题】:Dealing with dates and timezones, with Zend_Date使用 Zend_Date 处理日期和时区
【发布时间】:2009-06-16 16:53:44
【问题描述】:

我有一个使用 Zend_Date 来显示日期的应用程序。 Zend_Date 实例是使用 MySQL 中的日期时间数据、用户输入和当前日期创建的。

我希望我的用户能够指定他们的时区,并且所有日期都以他们的本地时间显示。

目前我的代码是这样工作的:

$date = '2009-01-01 10:30:00';

$date = new Zend_Date($date, Zend_Date::ISO_8601);

echo $date->get(Zend_Date::TIME_MEDIUM); //10:30:00

$date->setTimezone('Australia/ACT');

echo $date->get(Zend_Date::TIME_MEDIUM); //21:30:00

这可行,但需要在每个日期调用 setTimezone。有没有更简单的方法来管理时区?

我也一直在研究将 SET time_zone 与 MySQL 一起使用,以从 MySQL 返回调整后的数据。然后我只需要为时区调整 PHP 脚本中创建的日期。

如果有人有经验,我很想听听最好的处理方法。

谢谢

【问题讨论】:

    标签: php zend-framework date


    【解决方案1】:

    我认为设置 PHP 时区应该为所有后续 Zend_Date 实例设置默认值。例如:

    date_default_timezone_set('Europe/Vienna');
    

    来自Zend_Date section in the Zend Framework Reference Guide

    在 PHP 中,我们可以通过根据用户的期望设置默认时区来调整所有与日期和时间相关的函数以适用于特定用户。创建 Zend_Date 实例时,它们的时区会自动成为当前的默认时区!

    【讨论】:

    • 谢谢。似乎最好的方法是我将 UTC 设置为默认值,在内部使用 UTC 日期时间,并使用 setTimezone 生成特定于时区的本地时间。
    【解决方案2】:

    我认为你可以使用 Zend_Locale,阅读一些关于它的文档,很确定你可以让它工作。另一方面,如果您使用 Zend_Cache 和 Zend_Locale/Zend_Date,这将有助于大大提高速度。 zend 框架文档中也有使用示例。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-01-08
      • 2013-03-05
      • 2013-06-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多