Php часовой пояс time

date_timezone_set

Устанавливает новый часовой пояс для объекта ( object ) DateTime .

Подобен методу DateTimeImmutable::setTimezone() , за исключением работы с объектом DateTime .

Процедурная версия принимает объект DateTime в качестве первого аргумента.

Список параметров

Только для процедурного стиля: объект DateTime , возвращаемый date_create() . Функция изменяет этот объект.

Объект класса DateTimeZone , представляющий требуемый часовой пояс.

Возвращаемые значения

Возвращает объект DateTime для связывания методов. Лежащий в основе момент времени не изменяется при вызове метода.

Примеры

Пример #1 Пример использования DateTime::setTimeZone()

$date = new DateTime ( ‘2000-01-01’ , new DateTimeZone ( ‘Pacific/Nauru’ ));
echo $date -> format ( ‘Y-m-d H:i:sP’ ) . «\n» ;

$date -> setTimezone (new DateTimeZone ( ‘Pacific/Chatham’ ));
echo $date -> format ( ‘Y-m-d H:i:sP’ ) . «\n» ;
?>

$date = date_create ( ‘2000-01-01’ , timezone_open ( ‘Pacific/Nauru’ ));
echo date_format ( $date , ‘Y-m-d H:i:sP’ ) . «\n» ;

date_timezone_set ( $date , timezone_open ( ‘Pacific/Chatham’ ));
echo date_format ( $date , ‘Y-m-d H:i:sP’ ) . «\n» ;
?>

Результат выполнения данных примеров:

2000-01-01 00:00:00+12:00 2000-01-01 01:45:00+13:45

Смотрите также

  • DateTimeImmutable::setTimezone() — Устанавливает часовой пояс
  • DateTime::getTimezone() — Возвращает часовой пояс относительно текущего значения DateTime
  • DateTimeZone::__construct() — Создаёт новый объект DateTimeZone

User Contributed Notes

Источник

Как вывести время с учётом часового пояса в PHP

Как вывести время с учётом часового пояса в PHP

Иногда требуется сделать такой сайт, на котором время будет подстраиваться под часовой пояс пользователя. Задача эта непростая в том плане, что определить часовой пояс пользователя проблемно. Поэтому выводят в 99% случаев время, соответствующее серверному часовому поясу. Но давайте с Вами разберём, как всё-таки можно вывести время с учётом временной зоны конкретного пользователя.

Как я уже написал, определить часовой пояс пользователя сложно, об этом мы поговорим в следующей статье. А пока что будем считать, что мы уже знаем временное смещение относительно серверного времени.

Лучше всего будет поставить серверное время по Гринвичу. И сохранять надо все данные со временем именно по Гринвичу. Я уже когда-то писал, что хранить надо в той же базе данных не строковый формат даты и времени, а числовой, то есть тот, который возвращается функцией time().

Давайте с Вами разберём небольшой код:

date_default_timezone_set(«UTC»); // Устанавливаем часовой пояс по Гринвичу
$time = time(); // Вот это значение отправляем в базу
$offset = 3; // Допустим, у пользователя смещение относительно Гринвича составляет +3 часа
$time += 3 * 3600; // Добавляем 3 часа к времени по Гринвичу
echo date(«Y-m-d H:i:s», $time); // Выводим время пользователя, согласно его часовому поясу
?>

Примерно так и работает вывод времени с учётом часового пояса пользователя на PHP. Безусловно, можно и не ставить по умолчанию время по Гринвичу, а узнавать смещение относительно серверного времени. Впрочем, о смещении мы с Вами поговорим в следующей статье.

Создано 01.03.2013 11:05:23

  • Михаил Русаков
  • Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!

    Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
    Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.

    Если Вы не хотите пропустить новые материалы на сайте,
    то Вы можете подписаться на обновления: Подписаться на обновления

    Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.

    Порекомендуйте эту статью друзьям:

    Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

    1. Кнопка:
      Она выглядит вот так:
    2. Текстовая ссылка:
      Она выглядит вот так: Как создать свой сайт
    3. BB-код ссылки для форумов (например, можете поставить её в подписи):

    Комментарии ( 5 ):

    получается, что когда у нас переводится время +-1час летом и зимой, то придется два раза в год вручную менять значение $offset . я правильно понял?

    если таким скриптом,то да.можно функцию смены написать по дате

    а можно немного поподробнее? 🙂 можно эту ф-ию в студию? а то я уже больше месяца не могу до конца разобраться с этими ф-иями даты и времени.

    к сожалению в студию нельзя — её надо писать) суть я объяснил) условием проверяете дату и,если совпадает с нужной — переводите время

    Для добавления комментариев надо войти в систему.
    Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.

    Copyright © 2010-2023 Русаков Михаил Юрьевич. Все права защищены.

    Источник

    date_default_timezone_set

    date_default_timezone_set() устанавливает часовой пояс по умолчанию для всех функций даты/времени в скрипте.

    Вместо использования этой функции, вы можете воспользоваться INI-настройкой date.timezone для установки часового пояса по умолчанию.

    Список параметров

    Идентификатор часового пояса, например, UTC , Africa/Lagos , Asia/Hong_Kong или Europe/Lisbon . Список допустимых идентификаторов часовых поясов можно найти в разделе Список поддерживаемых часовых поясов.

    Возвращаемые значения

    Функция возвращает false , если timezoneId имеет неверное значение, в остальных случаях true .

    Примеры

    Пример #1 Получение часового пояса по умолчанию

    if ( strcmp ( $script_tz , ini_get ( ‘date.timezone’ ))) echo ‘Часовой пояс скрипта отличается от заданного в INI-файле.’ ;
    > else echo ‘Часовой пояс скрипта и настройки INI-файла совпадают.’ ;
    >
    ?>

    Смотрите также

    • date_default_timezone_get() — Возвращает часовой пояс, используемый по умолчанию всеми функциями даты/времени в скрипте
    • Список поддерживаемых часовых поясов

    User Contributed Notes

    Оцените статью