使用Zend_Date处理日期和时区

Dav*_*unt 6 php zend-framework 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
Run Code Online (Sandbox Code Playgroud)

这有效,但每个日期都需要setTimezone调用.有没有更简单的方法来管理时区?

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

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

谢谢

Tim*_*dle 7

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

date_default_timezone_set('Europe/Vienna');
Run Code Online (Sandbox Code Playgroud)

Zend Framework Reference Guide中Zend_Date部分:

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

  • 谢谢.似乎最好的方法是将UTC设置为默认值,在内部使用UTC日期时间,并使用setTimezone生成特定于时区的本地时间. (2认同)