2013-08-12 5 views
-1

В базе данных хранятся значения как YYYY-MM-DD HH:MM:SS(например, 2013-04-14% 2015: 00: 00), который находится в GMT, но истинное значение приведено выше дата и время + разность часовых поясов сервера.Добавление разницы во времени часового пояса (по отношению к GMT)

$time_heard = '2013-04-14%2015:00:00'; 
$time_diff = date('p') 

$real_time = $time_heard + $time_diff ; 

echo $real_time ; 

Как это сделать. Thanks

ответ

0

Если вы используете MySQL, вы можете использовать функциональность CONVERT_TZ прямо в SELECT. http://dev.mysql.com/doc/refman/5.0/en/date-and-time-functions.html#function_convert-tz

Если вам нужно сделать это в PHP, используйте DateTime class по creating a new DateTime with the timezone set to GMT затем changing the timezone и когда вы output the date он должен показать, как новый часовой пояс.

+0

Я использую PostgreSQL, и я не знаю часового пояса (так как они могут различаться, где установка выполняется). Другая проблема заключается в том, что переменная $ time_heard также может быть пользователем. –

+0

Тогда вам нужно будет использовать PHP. Но '$ time_heard' может использоваться как пользовательский ввод, когда вы создаете объект DateTime, просто обязательно используйте приемлемое форматирование. И чтобы получить часовой пояс локального сервера, просто используйте [date_default_timezone_get()] (http://php.net/manual/en/function.date-default-timezone-get.php) –

0

вы можете использовать date_default_timezone_set() функцию, чтобы установить время в зону, которую

здесь вы можете найти различные зоны: http://www.php.net/manual/en/timezones.php

или, если вы настаиваете, то вы можете использовать date_parse_from_format()

здесь это руководство для него: http://php.net/manual/en/function.date-parse-from-format.php

редактировать: еще один способ сделать это с помощью простых функций:

$tmstamp = strtotime($date1) + strtotime($date2); 
echo date("YYYY-MM-DD HH:MM:SS", $tmstamp) ; 
+0

Позвольте мне попробовать синтаксический анализ даты, но как я бы поставил его обратно вместе, как это было до добавления (не как массив, а как жало) –

+0

Я добавил еще один простой способ сделать это, прочитал его –

+0

'2013-04-14 15:00:00' << - время прослушивается мой часовой пояс Африка/Хартум так 1 час разница '1920-10-18 12:31:14' << - то, что на этот раз –