2009-06-16 110 views
6

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

我希望我的用户能够指定他们的时区和所有日期以显示当地时间。

目前我的代码是这样的:

$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脚本中为时区创建的日期。

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

谢谢

回答

7

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

date_default_timezone_set('Europe/Vienna'); 

Zend_Date section in the Zend Framework Reference Guide

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

+2

谢谢。看来最好的方法是将UTC设置为默认值,在内部使用UTC datetime,并使用setTimezone生成特定于时区的本地时间。 – 2009-06-16 21:30:59

1

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