2013-07-31 53 views
0

因此,我做了一件奇怪的事情,因爲我不認爲如果他們在同一個帳戶上,每個數據庫都可以有單獨的時區?轉換MySQL數據庫行時區

基本上我的大部分數據庫都是美國用戶使用的美國時區之一,然後我也運行英文博客。

我的問題是英文博客的日期時間行中插入了正確的BST(GMT + 1)值,但它在使用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和顯示時,在相關的時區只顯示。這樣你可以根據需要在多個時區顯示,並且在db中總是有一個參考時間,這很容易轉換爲任何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');