我有一個網站,我爲美國西部的一個水療中心設置了約會,例如PST時間。我應該如何在服務器端存儲來自JS的時間戳,以便我可以可靠地將其轉換爲其他時區?
當用戶選擇了說一點,上午10:00 @二○一○年三月二十〇日即會從我的桌面上的客戶端,它使用EDT時間創建日期對象是:
時間戳: 13953.24億
UTC字符串:星期四2014年3月20日10:00:00 GMT-0400(EDT)
我需要存儲這在服務器端。目前,我路過的時間戳從JS通過XHR到PHP和除以1000:
AJAX網址:ajax.php時間戳= 13953.24億
PHP代碼:
$time = $_GET['timestamp']/1000;
因爲我的默認時區是手動設置爲America/New_York
,我的客戶端的時間是美國東部時間,他們是一致的,所以顯示的合法時間:
echo date('M d Y H:i:s', $time); // Mar 20 2014 10:00:00
但最好我想我真的應該設置服務器端的日期時間至是美洲/洛杉磯。不過這將使echo date
顯示錯誤的日期,因爲這將會是,而不是EDT
了:
date_default_timezone_set('America/Los_Angeles');
Mar 20 2014 07:00:00
如今,它已成爲7:00 AM當用戶最初選擇10: 00 AM,這很明顯會導致混亂......如果用戶選擇了10:00 AM,我需要它在上午10點。
我的另一個擔心是,如果用戶的客戶端時間不是EDT?與America/New_York
或America/Los_Angeles
不一致嗎?
我是否應該像在Javascript中保存UTC字符串.toUTCString
然後以UTC來存儲時間,並將默認時區設置爲UTC,然後在需要顯示PST時間時將其轉換爲PST時間?
順便說,因爲我處理PHP < 5.3
據我所知,同樣的時間戳(如果正確地確定)代表即時在任何時區的「瞬間」。如果您需要知道用戶輸入的時區來自 – millimoose
如果您使用['.getTime()'](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Date/getTime),那麼你不必擔心,因爲它已經是UTC時間戳了。那只是一個服務器端展示的東西。 – mario
好的,但是服務器端的默認時區是什麼,然後爲了與用戶選擇的內容保持一致?將其設置爲UTC,然後將其轉換爲PST? –