дата для часового пояса

catindev

сферический распездяй в вакууме
имеется дата поста в БД.
как эту дату преобразовать к в часовому поясу, полученной в js допустим -6?

то есть, допустим, дата 2012-09-18 21:15
как вывести эту дату для конкретного часового пояса, допустим, -6 чтобы она была 2012-09-18 13:15

часовой пояс получаю таким js кодом

var time_zone = (new Date().getTimezoneOffset()/60);
 
ок. сам разобрался. вот универсальное решение

PHP:
echo  gmdate('Y-m-d H:i',  strtotime($server_date) + (3600 * abs($timezone)));

здесь $server_date - дата из базы, $timezone - временная зона (ака часовой пояс) полученный в js
 
потому, что зона может прийти с минусом
 
нет

для отрицательной зоны
PHP:
echo  gmdate('Y-m-d H:i',  strtotime($server_date) + (3600 * abs($timezone)));

для положительной
PHP:
echo  gmdate('Y-m-d H:i',  strtotime($server_date) - (3600 * abs($timezone)));
 
только туту один существенный недостаток.. не учитывается не целое число зоны, например - -03:30 для ньюфауленда или +05:45 для катманду
 
Unix timestamp для любой tz одинаков, так что способ неправославный.

Ну, а по поводу
нет

для отрицательной зоны
PHP:
echo  gmdate('Y-m-d H:i',  strtotime($server_date) + (3600 * abs($timezone)));

для положительной
PHP:
echo  gmdate('Y-m-d H:i',  strtotime($server_date) - (3600 * abs($timezone)));
У тебя в школе что по математике было?
 
Вурдалак ок, я в php чайник предложите решение с Unix timestamp

у меня есть поле в таблице date тип поля TIMESTAMP и значение по умолчанию CURRENT_TIMESTAMP

естевственно дата выставляется серверная. мне же нужно для каждого пользователя показывать эту дату согласно его часового пояса
 
Дата выставляется именно со стороны сервера, тебе просто нужно брать дату сервера и брать пояс пользователя и считать смещение. Ты неправильно понимаешь идеологию поясов. Пояс относится не только по отношению к автору поста, например, но и по отношению к читающему.

Ситуации просты, например, пользователь написал письмо вчера в 23:00. Я читаю его сегодня и я хочу видеть правильную дату, согласно СВОЕГО смещения, а не смещения автора поста. Иначе нет никакого смысла во временной зоне.
 
получается так..
дату в БД я получаю в Unix timestamp функцией time()
а когда мне ее надо вывести, то я устанавливаю временню зону с помощью date_default_timezone_set
и вывожу дату так
PHP:
echo date('d M H:i',$date);
 
как вариант, только учти, то смещение надо брать того, кто читает, а не того кто написал
 
kvf77

согласен. часовой пояс получаю с помощью js вот так

var time_zone = (new Date().getTimezoneOffset()/60);

и устанавливаю в php вот так

date_default_timezone_set('Etc/GMT'.$timezone);

получается что дата выводится для того кто читает
 
kvf77
согласен. часовой пояс получаю с помощью js вот так
var time_zone = (new Date().getTimezoneOffset()/60);
и устанавливаю в php вот так
date_default_timezone_set('Etc/GMT'.$timezone);
получается что дата выводится для того кто читает
Только GMT Deprecated как в JS так и в PHP. Пользуйся UTC.

А как передаёшь, если не секрет? Куки или у тебя на аяксе весь сайт?
 
Сверху