2013-03-16 4 views
2

Я пытаюсь синхронизировать мои PHP и MySQL раз. В настоящее время раз разные (выходы ниже):Синхронизация MySQL и PHP раз

'SELECT CURRENT_TIMESTAMP' returns '2013-03-16 13:14:28' 
'date('Y-m-d g:i:s')'  returns '2013-03-16 10:14:28' 

Я имел успех, чтение от других пользователей, на изменение времени MySQL с помощью SET time_zone='-7:00';. Проблема в том, что время будет меняться для разных запросов на основе местоположения пользователя, и я бы предпочел не изменять time_zone для каждого запроса.

Должен ли я просто установить time_zone один раз, сделав его одновременно с сервером, а затем изменить время, основанное на часовом поясе пользователя на PHP? Или есть лучший способ сделать это?

Спасибо заранее!

ответ

2

Должен ли я просто установить TIME_ZONE один раз, что делает его в то же время, как сервер, а затем изменить время, основываясь на часовом поясе пользователя в PHP? Или есть лучший способ сделать это?

Да. Вы также не должны устанавливать часовой пояс через свою зону GMT из-за летнего времени. Вы можете написать себе функции для этого преобразования, установив date_default_timezone_set ('UTC'); а затем в часовой пояс вашего пользователя.

$time = strtotime('2013-03-16 13:14:28'.' UTC'); 
echo date('Y-m-d g:i:s',$time); //2013-03-16 9:14:28 

Другая альтернатива - хранить mysql раз в «Unix Time», а затем конвертировать только один раз с PHP.

+0

Ohhh Мне нравится идея хранить их в Unix Time, а затем делать конвертацию каждый раз. Благодаря! – doitlikejustin

1

Вы определенно хотите использовать один часовой пояс в своем приложении/базе данных. Только измените часовой пояс данных (а не в db или php default tz), если вам нужно, когда вы показываете пользователю, - а затем делайте это прямо перед тем, как вы хотите его отобразить. в противном случае используйте один часовой пояс. Я предпочитаю GMT

установить часовой пояс сервера MySQL: в my.conf имеют somehthing так: default-time-zone='GMT' , а затем перезапустить MySQL см: http://dev.mysql.com/doc/refman/5.5/en/time-zone-support.html

Для PHP, где-то в верхней части каждой страницы РЕКОМЕНДУЕМЫМ выполнить эту строку:

date_default_timezone_set("GMT"); 
+0

Как было бы задание правильных дат, которые уже установлены в БД, которые были установлены с неправильным часовым поясом? – doitlikejustin

+0

вам нужно обновить любые даты в своей базе данных с датой в соответствующем часовом поясе. Вы можете сделать это, только если знаете, что такое предыдущий часовой пояс. UPDATE db.table set 'date' = CONVERT_TZ (' date', 'old tz', 'GMT') – Tucker

+0

Спасибо за отзыв о конвертации дат! – doitlikejustin

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