Как я могу просто изменить смещение часового пояса с Zend_Date?
Я использую Zend_Date для управления датами / временем в приложении планирования.
Единственный способ определить часовой пояс пользователя - использовать Javascript, который дает только смещение часового пояса. Похоже, что Zend_Date использует часовые пояса в формате "Америка / Нью-Йорк".
Есть ли способ получить часовой пояс пользователя в этом формате или установить смещение часового пояса с помощью Zend_Date?
Спасибо!
3 ответа
Nicky,
Для этого вам не нужен Zend_Date, так как для этого хорошо работают встроенные в PHP объекты DateTime и DateTimeZone; Тем не менее, я могу указать вам правильное направление, если вам действительно нужно использовать Zend_Date.
Смотрите следующие примеры
- $date = новая Zend_Date (1234567890, false, $ locale);
- $ date-> toString... (для получения более подробной информации см. http://framework.zend.com/manual/en/zend.date.constants.html)
- Используйте следующие константы для ISO 8601: (Z = Разница часового пояса [+0100])
Это должно привести вас туда, где вам нужно быть. Пожалуйста, отправьте образцы кода, если вы застряли.
Вы можете использовать функцию timezone_name_from_abbr:
$javascript_offset = '-1';
$zone = timezone_name_from_abbr('', $javascript_offset * 3600, 0);
Вам также нужно будет рассмотреть DST. Посмотрите на этот пример для получения дополнительной информации.
Вы можете использовать JavaScript, чтобы установить cookie для смещения часового пояса пользователя.
Тогда в php вы можете иметь массив, проиндексированный по смещению
$timezones = array (
'-1' => 'adfas/adsfafsd',
'-2' => 'adsfasdf/asdfasdf'
...
);
$date->setTimezone( $timezones[$_COOKIE['tz_offset']] );