[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: вывод даты с учетом часового пояса.
major28
Здравствуйте!
Работал с датами и вдруг возник вопрос, какую дату выдает нам функция date() в php? Время которое установлено на сервере? или он все же учитывает часовой пояс откуда был послан запрос? Как мне сделать чтобы клиенту всегда выдавалось время соответствующее его часовому поясу? Заранее спасибо!)



Спустя 15 минут, 20 секунд (8.07.2011 - 11:18) Rand написал(а):
Время и часовой пояс берется северный. Если клиент регистрируется, то он может указать свой часовой пояс. Тогда при запросе страницы высчитывается разница в поясах и прибавляется к времени сервера, затем выводится на экран. Если клиент - гость, тогда (в теории) можно например вычислять месторасположение по IP и узнавать какой там часовой пояс, но эта информация не всегда актуальна.

Спустя 1 час, 45 секунд (8.07.2011 - 12:18) tatti написал(а):
вопрос конечно интересный.

сервер изначально выдаёт время, которое установлено системой(тоесть учитывая часовой пояс). можно конечно узнать часовой пояс юзера и дальше всё просто казалось бы...

НО!

вот допустим я зарегался. время сервера+мой часовой пояс сохранились в БД и тут завтра сервак переехал тоесть физически сдвинулся на +9 по часовому поясу. что тогда?

поэтому принято хранить время в timestamp и уже на него накладывать часовой пояс клиента.

Спустя 10 минут, 44 секунды (8.07.2011 - 12:29) killer8080 написал(а):
Цитата (tatti @ 8.07.2011 - 12:18)
вот допустим я зарегался. время сервера+мой часовой пояс сохранились в БД и тут завтра сервак переехал тоесть физически сдвинулся на +9 по часовому поясу. что тогда?

тогда
date_default_timezone_set('Europe/Moscow');


ЗЫ дежавю какое то, где то я сегодня уже об этом говорил :rolleyes:

Спустя 3 минуты, 2 секунды (8.07.2011 - 12:32) Семён написал(а):
tatti
угу,
я делаю корректировку времени с настройками пользователя или его гео-положением.

Спустя 1 минута, 1 секунда (8.07.2011 - 12:33) Rand написал(а):
Не понял при чем тут формат хранения данных, timestamp всё равно будет браться с учетом часового пояса сервера. Если такой момент учитывать, то достаточно сохранять время в базе по гринвичу например, а не по текущему часовому поясу сервера, или выставлять локаль, как сказал killer8080.

Спустя 1 минута (8.07.2011 - 12:34) tatti написал(а):
killer8080
можно конечно, но лучше меньше операций, чем больше

Цитата (killer8080 @ 8.07.2011 - 09:29)
ЗЫ дежавю какое то, где то я сегодня уже об этом говорил rolleyes.gif
да да. было дело ) никак двойники на форуме завелись? biggrin.gif

Rand
время учитыватся будет с 1 января 1970 года вообще-то, причем тут часовой пояс сервера? blink.gif

Спустя 18 минут, 55 секунд (8.07.2011 - 12:53) killer8080 написал(а):
Цитата (Rand @ 8.07.2011 - 12:33)
timestamp всё равно будет браться с учетом часового пояса сервера

timestamp всегда по гринвичу smile.gif
Цитата (tatti @ 8.07.2011 - 12:34)
ЗЫ дежавю какое то, где то я сегодня уже об этом говорил

да да. было дело ) никак двойники на форуме завелись?

laugh.gif

Спустя 6 минут, 9 секунд (8.07.2011 - 12:59) Rand написал(а):
killer8080, точно, гуся пульнул, спс biggrin.gif

Спустя 1 день, 21 час, 22 минуты, 6 секунд (10.07.2011 - 10:21) major28 написал(а):
так чет я ваще запутался)))
Цитата
timestamp всегда по гринвичу

тоесть функция date("U") будет всегда возращать количество секунд прошедших с 1 января 00:00 1970 года с часового пояса нулевого мередиана так? получается эта функция возращает абсолютное значение всегда? а функции date("d-m-Y H:i:s", timestamp) будет уже переводить timestamp в формат d-m-Y H:i:s с учетом часового пояса сервера так? и еще..timestamp и unixtime это одно и тоже?)

Спустя 22 часа, 50 минут, 51 секунда (11.07.2011 - 09:12) killer8080 написал(а):
Цитата (major28 @ 10.07.2011 - 10:21)
тоесть функция date("U") будет всегда возращать количество секунд прошедших с 1 января 00:00 1970 года с часового пояса нулевого мередиана так? получается эта функция возращает абсолютное значение всегда? а функции date("d-m-Y H:i:s", timestamp) будет уже переводить timestamp в формат d-m-Y H:i:s с учетом часового пояса сервера так? и еще..timestamp и unixtime это одно и тоже?)

совершенно верно, только date("U") это уже извращение, для этих целей есть time() smile.gif
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.