![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| Elfer |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 76 Регистрация: 31.8.2008 Репутация: -1 Всего: -1 |
Доброго времени суток! Передо мной стоит задача - хранить время в БД по часовому поясу UTC+0 по Гринвичу (Лондон), на сайте отображать даты, согласно выбранной пользователем временной зоны.
Сейчас я делаю сайт на локалке. У меня GMT+02:00 (минское время). Поэтому когда сохраняю данные в БД, они сохраняются так: текущее время, на компьютере, к примеру 14:00, в БД заносится 16:00, т.е. прибавляется автоматически 2 часа (GMT+02:00). Мне нужно, чтобы данные заносились по Лондоновскому времени, т.е. если у меня 14:00, то чтобы записалось в БД 12:00. Я не знаю на каком сервере будет сайт, не буду знать его локальное время, поэтому предложенный вариант должен быть универсальным и работать с датами правильно на любом сервере не зависимо от его временной зоны. Второй вопрос: как мне обрабатывать даты, перед отображением пользователю, согласно его указанной временной зоны? |
|||
|
||||
| ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 96 Всего: 386 |
gmdate, Date.UTC ? Время, если его правильно указать с GMT в строке, сохраняется всегда по Гринвичу. (GMT и UTC вообще говоря, с точностью до web задач - одно и то же.) Клиенту с сервера и на сервер тоже нужно передавать время по гринвичу (с буквами GMT в дате) Тогда он, клиент и сервер, правильно поймет время и правильно его пересчитают в свое. -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! |
|||
|
||||
| Arantir |
|
|||
|
Рыбак без удочки ![]() ![]() Профиль Группа: Участник Сообщений: 960 Регистрация: 18.11.2012 Репутация: 16 Всего: 55 |
Получить гринвичское время в PHP можно через gmdate().
А, например, в MySQL значения полей с типом timestamp можно получать в соответствии с часовым поясом, если сделать предварительно запрос
-------------------- interface Жопа { // ATTENTION: has to be implemented by every class of the project for proper project work } |
|||
|
||||
| Elfer |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 76 Регистрация: 31.8.2008 Репутация: -1 Всего: -1 |
Спасибо, gmdate - то что нужно. Это перед записью в БД.
Но вот SET time_zone = '+02:00'; не подходит. Я использую фреймворк Yii, и он будет при обновлении изменять дату, если изначально ее извлечь со сдвигом по времени. Нужна функция, которая будет прибавлять к указанному времени, часы, согласно указанной временной зоне. Добавлено @ 16:46 Написал свою функцию, которая будет прибавлять к timestamp нужное время, затем вывожу его через date(); ksnk, Arantir - спасибо за помощь! Это сообщение отредактировал(а) Elfer - 12.7.2013, 16:47 |
|||
|
||||
| Sanchezzz |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1670 Регистрация: 19.11.2006 Где: Voronezh Репутация: 41 Всего: 60 |
-------------------- Понравился ответ "+" по репе, не забываем закрывать тему, заказы в LS. |
|||
|
||||
![]()
|
| Правила форума "PHP" | |
|
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |