Как вывести время с учётом часового пояса в PHP
Иногда требуется сделать такой сайт, на котором время будет подстраиваться под часовой пояс пользователя. Задача эта непростая в том плане, что определить часовой пояс пользователя проблемно. Поэтому выводят в 99% случаев время, соответствующее серверному часовому поясу. Но давайте с Вами разберём, как всё-таки можно вывести время с учётом временной зоны конкретного пользователя.
Как я уже написал, определить часовой пояс пользователя сложно, об этом мы поговорим в следующей статье. А пока что будем считать, что мы уже знаем временное смещение относительно серверного времени.
Лучше всего будет поставить серверное время по Гринвичу. И сохранять надо все данные со временем именно по Гринвичу. Я уже когда-то писал, что хранить надо в той же базе данных не строковый формат даты и времени, а числовой, то есть тот, который возвращается функцией time().
Давайте с Вами разберём небольшой код:
<?php
date_default_timezone_set("UTC"); // Устанавливаем часовой пояс по Гринвичу
$time = time(); // Вот это значение отправляем в базу
$offset = 3; // Допустим, у пользователя смещение относительно Гринвича составляет +3 часа
$time += 3 * 3600; // Добавляем 3 часа к времени по Гринвичу
echo date("Y-m-d H:i:s", $time); // Выводим время пользователя, согласно его часовому поясу
?>
Примерно так и работает вывод времени с учётом часового пояса пользователя на PHP. Безусловно, можно и не ставить по умолчанию время по Гринвичу, а узнавать смещение относительно серверного времени. Впрочем, о смещении мы с Вами поговорим в следующей статье.
-
- Михаил Русаков
Комментарии (5):
Спасибо
Ответить
получается, что когда у нас переводится время +-1час летом и зимой, то придется два раза в год вручную менять значение $offset ??? я правильно понял?
Ответить
если таким скриптом,то да.можно функцию смены написать по дате
Ответить
а можно немного поподробнее? :) можно эту ф-ию в студию? а то я уже больше месяца не могу до конца разобраться с этими ф-иями даты и времени.
Ответить
к сожалению в студию нельзя - её надо писать) суть я объяснил) условием проверяете дату и,если совпадает с нужной - переводите время
Ответить
Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.