Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Базы Данных > Хранение временных зон в базе


Автор: mark2009 12.10.2009, 21:18
Здравствуйте,

Меня интересует каким образом хранить и работать с временными зонами в базе? К примеру пользователи регистрируются, но все из разных городов, соответственно время у всех разное. Как всё это свести к одному знаменателю, что говорится? smile

Просьба в исходные коды не отсылать, смотрел у phpBB, но честно говоря недопонял. Просто сам сейчас форум пишу, уже достаточно много сделано, и вот возникла вот эта проблема.

Всем спасибо за помощь smile

Автор: SamDark 13.10.2009, 00:08
mark2009, 
Хранить в том виде, который принимает PHP: http://ru.php.net/manual/en/timezones.php

Ни в коем случае не храните отдельно оффсет (+4, -10). Во многих странах нет перехода на летнее/зимнее время, во многих он выполняется не как у всех.

Автор: solenko 13.10.2009, 01:01
Ну и, естественно, все timestamp хранить в GMT и преобразовывать уже на стороне php

Автор: mark2009 13.10.2009, 05:50
Эээ... т.е. вы хотите сказать, что поле для временной зоны должно быть varchar и там должна быть строка, которая в скрипте реально преобразуется в оффсет от GMT?

Цитата("Solenko")

Ну и, естественно, все timestamp хранить в GMT и преобразовывать уже на стороне php 


У меня сейчас даты хранятся в том виде, в каком их подаёт функция time(). Это неправильно или не совсем правильно? smile

Автор: solenko 13.10.2009, 09:35
Цитата(mark2009 @  13.10.2009,  04:50 Найти цитируемый пост)
У меня сейчас даты хранятся в том виде, в каком их подаёт функция time(). Это неправильно или не совсем правильно? 

Если память не изменяет, то time не зависит от локли. Но вы же не храните время в формате unix timestamp? А вот date уже зависима от локали сервера. Могу ошибаться -- проверьте через мануал.

Автор: SamDark 13.10.2009, 13:47
mark2009, 
Да. Именно строкой.

Автор: sTa1kEr 13.10.2009, 14:53
Цитата(SamDark @  13.10.2009,  01:08 Найти цитируемый пост)
Ни в коем случае не храните отдельно оффсет (+4, -10). Во многих странах нет перехода на летнее/зимнее время, во многих он выполняется не как у всех. 

Да уж. За примерами кривой реализации далеко ходить не надо. =/

Цитата(mark2009 @  13.10.2009,  06:50 Найти цитируемый пост)
Эээ... т.е. вы хотите сказать, что поле для временной зоны должно быть varchar и там должна быть строка, которая в скрипте реально преобразуется в оффсет от GMT?

Специально преобразовывать не нужно, можно воспользоваться классами http://php.net/datetime и http://php.net/datetimezone

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)