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» ;
?php
$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» ;
?php
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
Иногда требуется сделать такой сайт, на котором время будет подстраиваться под часовой пояс пользователя. Задача эта непростая в том плане, что определить часовой пояс пользователя проблемно. Поэтому выводят в 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.
Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления
Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.
Порекомендуйте эту статью друзьям:
Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):
- Кнопка:
Она выглядит вот так: - Текстовая ссылка:
Она выглядит вот так: Как создать свой сайт - 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
- Функции даты и времени
- checkdate
- date_add
- date_create_from_format
- date_create_immutable_from_format
- date_create_immutable
- date_create
- date_date_set
- date_default_timezone_get
- date_default_timezone_set
- date_diff
- date_format
- date_get_last_errors
- date_interval_create_from_date_string
- date_interval_format
- date_isodate_set
- date_modify
- date_offset_get
- date_parse_from_format
- date_parse
- date_sub
- date_sun_info
- date_sunrise
- date_sunset
- date_time_set
- date_timestamp_get
- date_timestamp_set
- date_timezone_get
- date_timezone_set
- date
- getdate
- gettimeofday
- gmdate
- gmmktime
- gmstrftime
- idate
- localtime
- microtime
- mktime
- strftime
- strptime
- strtotime
- time
- timezone_abbreviations_list
- timezone_identifiers_list
- timezone_location_get
- timezone_name_from_abbr
- timezone_name_get
- timezone_offset_get
- timezone_open
- timezone_transitions_get
- timezone_version_get