2012-05-13 38 views
0

我正在創建這篇文章,以獲得確認,我正確理解過程,並獲得有關解決問題的一些小細節的反饋後期時間顯示並正確存儲在不同時區的用戶。PHP顯示存儲的時間數據,並存儲時間數據,同時考慮不同的時區

存儲

第一步是獲得用戶時區作爲GMT使用JavaScript函數偏移格式,並將其存儲在一個會話變量的時間。例如,$ timezone變量將存儲GMT -4

$timezone=$_SESSION['time']; 

接下來,一旦我有我的用戶時區。當用戶發佈帖子時,我將發佈時間存儲在mysql數據庫中,我需要將其存儲爲UTC格式。我該怎麼做呢?目前當我存儲時間數據。它是以下列方式。我的郵票字段是日期時間格式,如果可能,我想離開它。

INSERT INTO posts (stamp) VALUES (now()) 

我用什麼函數代替now()來獲取UTC格式,然後將其插入到我的數據庫中?我假設我需要使用一個php函數,它將使用$ timezone生成UTC日期。

顯示時間

接下來,一旦UTC日期存儲在數據庫中。我需要根據我們設置的$ timezone變量向用戶顯示數據。

所以,當我顯示時間,我目前做

echo date('F d', strtotime($list1['stamp'])); 

一旦我有存儲的數據作爲UTC時間,這將顯示UTC時間,但我需要顯示UTC的偏移用戶自己時區,所以我需要使用$ timezone將UTC時間的$list['stamp']轉換爲用戶時區。我爲此使用了什麼功能?

tl:dr 這應該是我需要做的工作。讓我知道你是否看到任何建議,或者我還沒有考慮過的項目,以及如果你知道我需要使用什麼函數將時間轉換爲UTC以存儲在數據庫中,以及使用什麼函數來轉換UTC時間使用$ timezone變量顯示用戶。

+1

不是一個正確的答案,但我發現DateTime類和它的setTimezone方法在過去很有用。 – Corbin

+0

非常感謝,我會考慮一下。 – arboles

回答

1

對於插入UTC時間到數據庫:

INSERT INTO posts (stamp) VALUES (UTC_DATE()) 

UPDATE:這隻會插入YYYY-MM-DD到你的數據庫。如果您需要的時間爲好,然後用:

INSERT INTO posts (stamp) VALUES (UTC_TIMESTAMP()) 

然後根據時區打印日期:

$date = date_create($list1['stamp'], timezone_open($timezone)); //$timezone='Pacific/Nauru'; 
echo date_format($date, 'F d'); 

這將有助於讓你開始。瞭解更多關於PHP的面向對象方法的DateTime Class,以及更一般的更清晰的編程。

+0

非常感謝。timezone_open()需要$ timezone ='Pacific /瑙魯'或可以$ timezone ='GMT -4'如果前者,我如何將GMT -4轉換爲'Pacific /瑙魯'(即將偏移量轉換爲時區名稱。) – arboles

+0

我想你需要mysql函數UTC_TIMESTAMP()而不是UTC_DATE() – user570783

+0

很酷的謝謝。我應該使用UTC_TIMESTAMP而不是UTC_DATE存儲日期?這與my_sql圖章數據庫字段是datetime格式有關嗎? – arboles

相關問題