Из базы MySQL идет выборка даты (поле date_came, тип timestamp(14), вывод делается в виде DATE_FORMAT(date_came,'%d.%m.%Y (%H:%i)'). В базу заносится время сервера. В кукисах у пользователя хранится переменная GMT содержащая величину часового пояса в формате GMT в зависимости от региона проживания (+3,+6,-3). Не могу сделать вывод даты в зависимости от значения GMT. То есть если на сервере в Лондоне время 00:30:00, то в посетителю из Москвы, который указал $GMT=+3, выводилось бы 03:30:00 Функции MySQL работающие в GMT не нашел. Нашел некоторые функции работающие в PHP5 с GMT, но проблема в том, что на сервере стоит еще 4 версия PHP. Понимаю, что наверное нужно мудрить, но может у кого то есть изящное и короткое решение. Помогите чем сможете...
$t - timestamp с базы, $gmt с куки: PHP: <? $t += $gmt * 3600; echo date('M d Y H:i:s', $t); ?> не то?
Ну вот примерный код. Код (Text): $gmt=3;//Часовой пояс $r = mysql_query("SELECT date_cam FROM table ORDER BY date_cam"); for($i=0;$i<mysql_num_rows($r);$i++) { $f=mysql_fetch_array($r); $t=$f[date_cam]; $t += $gmt * 3600; echo date('d.m.Y (H:i) ', $t); echo" ($f[date_cam])<BR>"; } Не работает: Выдает 01.01.1970 (09:33) (2008-04-09 12:19:31) Вопрос открыт...
а что у тебя в $t попадат? может надо PHP: <? $t=$f['date_cam']; ?> так у тебя не timestamp в базе :? здесь надо использовать чистый timestamp без форматирования
Точно не timestamp был. Я балбес... Но все таки... Что то начало получаться. Но все равно выдает ошибки. В базе лежит дата в timestamp(14) 20080415144513 то есть 2008 04 15 14:45:13 А при gmt=9.5 выводит на экран 24.09.2015 (11:45) И аналогичный вопрос если все таки будет у меня datetime стоять...
timestamp - кол-во секунд от начала эпохи Unix. а у тебя что-то другое вот какой должн быть timestamp для данной даты PHP: <? echo mktime(14, 45, 13, 4, 15, 2008); ?> ИМХО, дежишь в базе timestamp, а потом с ПХП форматируешь как хочешь.
В самом мускуле есть переменная time_zone. Её можн установить: set time_zone = 'Europe/Moscow'. В итоге у нас GMT+3. Для PHP поставить зану можно так: date_default_timezone_set('Europe/Moscow').