Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Работа с датой и временем, локаль 
V
    Опции темы
Elfer
Дата 12.7.2013, 14:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 76
Регистрация: 31.8.2008

Репутация: -1
Всего: -1



Доброго времени суток! Передо мной стоит задача - хранить время в БД по часовому поясу UTC+0 по Гринвичу (Лондон), на сайте отображать даты, согласно выбранной пользователем временной зоны.
Сейчас я делаю сайт на локалке. У меня GMT+02:00 (минское время). Поэтому когда сохраняю данные в БД, они сохраняются так: текущее время, на компьютере, к примеру 14:00, в БД заносится 16:00, т.е. прибавляется автоматически 2 часа (GMT+02:00). Мне нужно, чтобы данные заносились по Лондоновскому времени, т.е. если у меня 14:00, то чтобы записалось в БД 12:00. Я не знаю на каком сервере будет сайт, не буду знать его локальное время, поэтому предложенный вариант должен быть универсальным и работать с датами правильно на любом сервере не зависимо от его временной зоны.
Второй вопрос: как мне обрабатывать даты, перед отображением пользователю, согласно его указанной временной зоны?
PM MAIL WWW ICQ   Вверх
ksnk
Дата 12.7.2013, 15:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 96
Всего: 386



Цитата(Elfer @  12.7.2013,  14:49 Найти цитируемый пост)
в БД заносится 16:00, т.е. прибавляется автоматически 2 часа (GMT+02:00).


gmdate, Date.UTC ?

Время, если его правильно указать с GMT в строке, сохраняется всегда по Гринвичу. (GMT и UTC вообще говоря, с точностью до web задач - одно и то же.)
Клиенту с сервера и на сервер тоже нужно передавать время по гринвичу (с буквами GMT в дате) Тогда он, клиент и сервер, правильно поймет время и правильно его пересчитают в свое.



--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
Arantir
Дата 12.7.2013, 15:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Рыбак без удочки
**


Профиль
Группа: Участник
Сообщений: 960
Регистрация: 18.11.2012

Репутация: 16
Всего: 55



Получить гринвичское время в PHP можно через gmdate().
А, например, в MySQL значения полей с типом timestamp можно получать в соответствии с часовым поясом, если сделать предварительно запрос
Код

SET time_zone = '+02:00';
эта настройка действует только в пределах соединения (так же, как SET NAMES и т.п.).


--------------------
interface Жопа {
    // ATTENTION: has to be implemented by every class of the project for proper project work
}
PM   Вверх
Elfer
Дата 12.7.2013, 16:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 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
PM MAIL WWW ICQ   Вверх
Sanchezzz
Дата 12.7.2013, 19:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1670
Регистрация: 19.11.2006
Где: Voronezh

Репутация: 41
Всего: 60



Думаю это будет для вас полезным 
Yii local-time-zones-and-locales 


--------------------
Понравился ответ "+" по репе, не забываем закрывать тему, заказы в LS.
PM MAIL Skype GTalk   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0440 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.