2015-03-21 3 views
0

Im использованием MySQL с PHP, и проект является своего рода менеджером уведомленийпреобразования UTC в местное время автоматически с помощью PHP

если кто-то делает некоторые вещи, должны быть размещены в общем пост-земле новое уведомление

вопрос - мы есть пользователи из разных часовых поясов, в настоящее время Im помощью «DateTime» в качестве типа поля, так что когда-нибудь я вхожу новообращенных в UTC

, например: Im из Индии (+5: 30) и если я создам уведомление на 21/3/2015 22:50:00, он сохраняет в БД как 21/3/2015 17:20:00

хранение работает отлично из всех зон, но при его получении это отображается для меня как 21/3/2015 17:20:00 (UTC), но я ожидаю в своем часовом поясе (IST +5: 30), так что, я ожидаю, 21/3/2012 22:50:00.

есть ли способ указать в самом запросе, чтобы получить время, преобразованное в выборку?

или любым другим способом конвертировать и обрабатывать дальше?

любая помощь на это очень ценится.

Спасибо

+0

Самый простой альтернативой делать это в запросе для использования объектов DateTime PHP. –

+0

Поля 'timestamp' имеют UTC-преобразование, а не поля' datetime'. По крайней мере [согласно документам] (http://dev.mysql.com/doc/refman/5.7/en/datetime.html). Возможно, это происходит на стороне PHP? Пожалуйста, покажите код. –

ответ

1

Вы можете использовать функцию convert_tz так при выборе вы можете использовать следующие

mysql> select convert_tz('2015-03-21 17:20:00','+00:00','+05:30') as ist_time; 
+---------------------+ 
| ist_time   | 
+---------------------+ 
| 2015-03-21 22:50:00 | 
+---------------------+ 
1 row in set (0.00 sec) 

Все, что вам нужно сделать, это изменить трудно закодированную дату '2015-03-21 17:20:00' к вашему имени столбца в выбор.

+0

cool @Abhik, мой вопрос: как установить +5: 30? Я знаю, что мой IST, поэтому я устанавливаю +5: 30, как сделать его динамичным, поэтому он находит часовой пояс клиентов и действует соответственно? – user2398514

+1

Ну, это большая тема, если вы храните пользовательский часовой пояс в db, тогда для каждого пользователя, пока они просматривают данные, вам нужно преобразовать utc в часовой пояс пользователя. Вы можете проверить объект php 'DateTime', который имеет некоторые интересные функции для преобразования часового пояса. –

1

Вы можете получить клиента TimeZone через JSTZ

В файле PHP, вы можете просто конвертировать дату после того, как вы получили от MySQL:

$date = new DateTime($date . " " . "UTC"); 
$date->setTimezone(new DateTimeZone($timeZoneTo));//$timeZoneTo you get it from JSTZ 
+1

Это разумно, но понимайте, что JSTZ примет * угаданное предположение * в часовом поясе. Это очень часто правильно, но иногда это не так. –

Смежные вопросы