Вывести часовой пояс php

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

    Источник

    Как вывести время с учётом часового пояса в 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 Русаков Михаил Юрьевич. Все права защищены.

Источник

Dater — определяет часовой пояс, локализует и форматирует время в PHP

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

А что если хочется просто несколько строчек кода, и чтобы весь остальной код никогда не узнал, что данные клиенту нужно отдавать в другом часовом поясе, и что в данных пришедших от клиента время может быть указано с часовым поясом отличным от серверного? Для решения этой и многих других задач, сегодня я расскажу вам про одну лаконичную и функциональную библиотеку для PHP.

И так, встречайте — Dater, и его основные возможности:

  • Биндинг форматов
  • Локализация текстов и форматов
  • Расширение списка опций форматирования
  • Автоопределение часового пояса
  • Конвертация времени с учётом часового пояса
  • Автоматическая конвертация времени в $_GET, $_POST, $_REQUEST с учётом часового пояса
  • Автоматическая конвертация часового пояса в шаблоне отправляемых данных

Биндинг форматов

Позволяет стандартизовать для проекта набор используемых форматов и работать с ними по имени:

$dater = new Dater\Dater(new Dater\Locale\En()); $dater->format(time(), 'd/m/Y'); // 2013/03/14 $dater->addFormat('slashedDate', 'd/m/Y'); $dater->format(time(), 'slashedDate'); // 2013/03/14 $dater->slashedDate(time()); // 2013/03/14 

Расширение опций форматирования

Доступны все опции форматирования из date(), которые также могут быть переопределены и расширены:

$dater->addFormatOption('ago', function (DateTime $datetime) < return floor((time() - $datetime->getTimestamp()) / 86400) . ' days ago'; >); $dater->format(time() - 60*60*24*7, 'd F Y, ago'); // 14 March 2013, 7 days ago 

Поддержка локалей

$dater->setLocale(new Dater\Locale\En()); echo $dater->date(); // 03/21/2013 echo $dater->now('j F Y'); // 21 March 2013 $dater->setLocale(Dater\Dater::getLocaleByCode('ru')); echo $dater->date(); // 21.03.2013 echo $dater->now('j F Y'); // 21 марта 2013 

Стандартные методы для серверных и пользовательских форматов с учётом локали

echo $dater->date(); // 03/21/2013 (client timezone, depends on locale) echo $dater->time(); // 5:41 AM (client timezone, depends on locale) echo $dater->datetime(); // 03/21/2013 5:41 (client timezone, depends on locale) echo $dater->isoDate(); // 2013-03-21 (client timezone) echo $dater->isoTime(); // 05:41:28 (client timezone) echo $dater->isoDatetime(); // 2013-03-21 05:41:28 (client timezone) echo $dater->serverDate(); // 2013-03-21 (server timezone) echo $dater->serverTime(); // 09:41:28 (server timezone) echo $dater->serverDatetime(); // 2013-03-21 09:41:28 (server timezone) 

Конвертация даты-времени с учётом часового пояса

$dater->setServerTimezone('Europe/Moscow'); $dater->setClientTimezone('Europe/London'); echo $dater->serverDatetime(); // 2013-03-21 08:18:06 echo $dater->isoDatetime(); // 2013-03-21 04:18:06 echo $dater->time(); // 04:18 

Стоит упомянуть, что при вызове $dater->setServerTimezone(‘Europe/Moscow’); функция date() и класс DateTime будут возвращать время в новом установленном часовом поясе. Чтобы это отключить передайте методу false вторым параметром.

И наконец обещанное

Код, который позволит вам автоматически определить часовой пояс клиента и выводить для него актуальную дату-время:

В заголовке глобального скрипта инициализации

$dater = new Dater\Dater(new Dater\Locale\Ru(), 'Europe/Moscow'); $timezoneDetector = new Dater\TimezoneDetector(); $dater->setClientTimezone($timezoneDetector->getClientTimezone()); $dataHandler = new Dater\DataHandler($dater); $dataHandler->enableOutputTimezoneHandler(); $dataHandler->convertRequestDataToServerTimezone(); 

Теперь все строки YYYY-MM-DD HH:MM:SS в отправляемых данных будут заменены на YYYY-MM-DD HH:MM:SS в автоматически определённом часовом поясе клиента. Если же вам нужно выводить дату-время в определённом формате, то достаточно добавить YYYY-MM-DD HH:MM:SS[Н m d] или YYYY-MM-DD HH:MM:SS[date] где date — забинденный в Dater формат. Также можно выводить и форматировать timestamp формат: 1363853607[d.m.Y].

Например, следующие данные

  Timestamp format: 1363238564 (не изменится) Timestamp format: 1363238564[Y/m/d] Timestamp format: 1363238564[datetime] Server datetime format: 2013-03-14 09:22:44[Y/m/d] Server datetime format: 2013-03-14 09:22:44[time] Server datetime format: 2013-03-14 09:22:44  

Будут автоматически конвертированы в

  Timestamp format: 1363238564 (не изменится) Timestamp format: 2013/03/14 Timestamp format: 14.03.2013 07:22 Server datetime format: 2013/03/14 Server datetime format: 07:22 Server datetime format: 2013-03-14 07:22:44  

В то же время $dataHandler->convertRequestDataToServerTimezone(); сделает так, что все YYYY-MM-DD HH:MM:SS данные поступающие от клиента будут конвертированы в YYYY-MM-DD HH:MM:SS часового пояса сервера. Таким образом сервер никогда не узнает о том, что клиент получает и отправляет дату-время в другом часовом поясе.

Стоит признать, что это немножко экстремальный вариант обработки часовых поясов. Более универсальным и традиционным решением было бы отказаться от использования $dataHandler->enableOutputTimezoneHandler(); и просто обрамлять вставку каждой даты-времени вызовом соответствующего метода форматирования. Например date($datetimeOrTimestamp) ?> .

О проекте

Честно признаюсь, что являюсь автором этой библиотеки, и буду очень благодарен за любую критику и помощь в доработке. Исходники выложены на GitHub под свободной BSD лицензией, пользуйтесь и распространяйте как пожелаете.

Надеюсь кому-нибудь таки пригодится 🙂

UPD По многочисленным просьбам библиотека была зарефакторена с использованием namespace, в соответствии с PSR-0. Предыдущая версия сохранена в отдельный бранч, и доступна из Composer как «dater/dater»:»1.*@dev» .

Источник

Читайте также:  Html post запрос пример
Оцените статью