Работал с датами и вдруг возник вопрос, какую дату выдает нам функция date() в php? Время которое установлено на сервере? или он все же учитывает часовой пояс откуда был послан запрос? Как мне сделать чтобы клиенту всегда выдавалось время соответствующее его часовому поясу? Заранее спасибо!)
Спустя 15 минут, 20 секунд (8.07.2011 - 11:18) Rand написал(а):
Время и часовой пояс берется северный. Если клиент регистрируется, то он может указать свой часовой пояс. Тогда при запросе страницы высчитывается разница в поясах и прибавляется к времени сервера, затем выводится на экран. Если клиент - гость, тогда (в теории) можно например вычислять месторасположение по IP и узнавать какой там часовой пояс, но эта информация не всегда актуальна.
Спустя 1 час, 45 секунд (8.07.2011 - 12:18) tatti написал(а):
вопрос конечно интересный.
сервер изначально выдаёт время, которое установлено системой(тоесть учитывая часовой пояс). можно конечно узнать часовой пояс юзера и дальше всё просто казалось бы...
НО!
вот допустим я зарегался. время сервера+мой часовой пояс сохранились в БД и тут завтра сервак переехал тоесть физически сдвинулся на +9 по часовому поясу. что тогда?
поэтому принято хранить время в timestamp и уже на него накладывать часовой пояс клиента.
сервер изначально выдаёт время, которое установлено системой(тоесть учитывая часовой пояс). можно конечно узнать часовой пояс юзера и дальше всё просто казалось бы...
НО!
вот допустим я зарегался. время сервера+мой часовой пояс сохранились в БД и тут завтра сервак переехал тоесть физически сдвинулся на +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) |
ЗЫ дежавю какое то, где то я сегодня уже об этом говорил ![]() |
да да. было дело ) никак двойники на форуме завелись? 
Rand
время учитыватся будет с 1 января 1970 года вообще-то, причем тут часовой пояс сервера?

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

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

Цитата (tatti @ 8.07.2011 - 12:34) |
ЗЫ дежавю какое то, где то я сегодня уже об этом говорил да да. было дело ) никак двойники на форуме завелись? |

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

Спустя 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()
