2013-07-31 3 views
0

Так что я сделал что-то смехотворно сложное случайно, потому что я не думаю, что вы можете иметь отдельные временные интервалы для каждой базы данных в MySQL, если они находятся в одной учетной записи?Преобразование строки времени базы данных MySQL времени

В основном большинство моих баз данных предназначены для американских пользователей и используют один из американских часовых поясов, затем я также запускаю английский блог.

Моя проблема заключается в том, что английский блог имеет правильное значение BST (GMT + 1), вставленное в строку datetime, но оно находится в базе данных, использующей часовой пояс MDT.

я тогда нужен получить, что время для подачи RSS, используя:

$date = date('r', $data['date']); //MDT system but $data['date'] is GMT+1 

, но это дает мне время в будущем на момент записи блог из-за неправильный часовой пояс.

Есть ли способ конвертировать BST в MDT?

но он становится еще более сложным, потому что в течение нескольких месяцев в Англии мы используем GMT (GMT + 0) вместо BST (GMT + 1) ... есть все равно, чтобы определить, какой часовой пояс используется в Англии во время года и совершать конверсию, или я просто слишком усложняю весь этот вопрос?

+0

Самый простой способ хранить все время в UTC и просто отображать в соответствующем часовом поясе, когда он отображается. Таким образом, вы можете отобразить в нескольких часовых поясах по мере необходимости и всегда иметь один отсчета времени в БД, который легко преобразовать в любой TZ – Anigel

+0

неприятности @Anigel есть у меня 6+ лет стоит данных в настоящее время, так что это не очень легко изменить, что – Dan

+1

Ответ здесь может помочь http://stackoverflow.com/questions/13698779/timezone-with-dst-handling-by-php – Anigel

ответ

0

Следующее решение работает отлично:

$oldDate = date('l F j Y H:i:s', $link['date']); 
$date = new DateTime($oldDate, new DateTimeZone('Europe/London')); 
$date->setTimezone(new DateTimeZone('UTC')); 
echo $date->format('r'); 
Смежные вопросы