使用Zend_Date处理日期和时区

时间:2009-06-16 16:53:44

标签: php zend-framework date

我有一个使用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。是否有更简单的方法来管理时区?

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

如果有人有经验,我很乐意听到解决这个问题的最佳方法。

由于

2 个答案:

答案 0 :(得分:7)

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

date_default_timezone_set('Europe/Vienna');

来自Zend_Date section in the Zend Framework Reference Guide

  

在PHP中,我们可以根据用户的期望设置默认时区,调整所有与日期和时间相关的功能,以便为特定用户工作。创建Zend_Date实例时,它们的时区将自动成为当前的默认时区!

答案 1 :(得分:1)

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