[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: TIMESTAMP и timezone
SpbSprut
Здравствуйте.

Спросил на mysql форуме, мне за два дня так никто и не ответил)) дублирую вопрос:

Допустим у нас есть mysql сервер с тайм зоной установленной в MSK.
В базе данных есть поле с типом TIMESTAMP, default CURRENT_TIMESTAMP
Есть два пользователя в Москве и Владивостоке.
Оба в одно время написали сообщение.

Соответственно при сохранении и у того и у другого mysql считает временную зону, переведет время в unix time, исходя из его зоны, и сохранить у себя.
А при выводе для каждого пользователя обратно - спросит временную зону, возьмет сохраненный unix time, переведет время с учетом временной зоны и вернет время обратно.

1) Первый вопрос, правильно ли я все описал.
2) Правильно ли я понимаю что mysql узнает временную зону (с какой временной зоной она будет работать) пользователя через отдаваемые браузером заголовки и что никакой сессии в mysql для пользователя не создается и временная зона задается при каждом отправляемом запросе?
SpbSprut
Существует несколько методов, давайте их разберём:

Определить по IP. Самый плохой способ, поскольку не всегда по IP можно определить даже страну, не говоря уже о городе. Вдобавок, нужно будет держать информацию о часовом поясе для каждого города мира.
Попросить пользователя указать свой часовой пояс. Самый частоиспользуемый способ. Как правило, часовой пояс запрашивают при регистрации пользователя на сайте. А зная часовой пояс пользователя, можно без проблем узнать смещение относительно базового времени сервера, а дальше всё написано в предыдущей статье.
Узнать через JavaScript. Самый оригинальный способ. В данном способе надо, используя объект Date, отправить на сервер информацию (как отправлять данные написано здесь) о текущем часе пользователя. Далее на сервере надо посчитать разницу между текущим часом базового времени на сервере и тем часом, что пришёл от пользователя. Далее сохранить в cookie или сессию это смещение. Вот и всё.
Быстрый ответ:

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