Как я могу просто изменить смещение часового пояса с Zend_Date?

Я использую Zend_Date для управления датами / временем в приложении планирования.

Единственный способ определить часовой пояс пользователя - использовать Javascript, который дает только смещение часового пояса. Похоже, что Zend_Date использует часовые пояса в формате "Америка / Нью-Йорк".

Есть ли способ получить часовой пояс пользователя в этом формате или установить смещение часового пояса с помощью Zend_Date?

Спасибо!

3 ответа

Решение

Nicky,

Для этого вам не нужен Zend_Date, так как для этого хорошо работают встроенные в PHP объекты DateTime и DateTimeZone; Тем не менее, я могу указать вам правильное направление, если вам действительно нужно использовать Zend_Date.

Смотрите следующие примеры

  1. $date = новая Zend_Date (1234567890, false, $ locale);
  2. $ date-> toString... (для получения более подробной информации см. http://framework.zend.com/manual/en/zend.date.constants.html)
  3. Используйте следующие константы для 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']] );
Другие вопросы по тегам