I have an application which uses Zend_Date to display dates. Zend_Date instances are created using datetime data from MySQL, user input and the current date.
I would like for my users to be able to specify their timezone and for all dates to be displayed in their local time.
At the moment my code works like this:
$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
This works, but requires a setTimezone call on every date. Is there an easier way to manage timezones?
I've also been looking at using SET time_zone with MySQL, to return adjusted data from MySQL. Then I would only need to adjust dates created within PHP scripts for timezones.
I'd love to hear the best way to handle this, if someone has experience.
Thanks
I think that setting the PHP timezone should set the default for all subsequent Zend_Date instances. For example:
date_default_timezone_set('Europe/Vienna');
From the Zend_Date section in the Zend Framework Reference Guide:
In PHP, we can adjust all date and time related functions to work for a particular user by setting a default timezone according to the user's expectations. When creating Zend_Date instances, their timezone will automatically become the current default timezone!
I think you could make use of the Zend_Locale, read some docs about it, pretty sure you'd be able to make it work. On the other hand, if you use Zend_Cache and Zend_Locale/Zend_Date, that's gonna help up improve the speed by quite a bit. There are examples of usage in the zend framework docs too.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With