當使用PHP的DateTime將存儲日期轉換爲其他時區後,是否需要存儲時間信息(例如,2012-12-31 00:00:00而不是2012-12-31)?看來如果我只是存儲日期,時區轉換是不準確的,所以我不確定是否真的需要時間信息,或者我只是錯過了一些東西?將日期轉換爲其他時區時是否需要存儲時間?
0
A
回答
1
時區轉換工作按小時偏移 - 與出存儲的時間(ATLEAST小時),你無法準確計算的差異。
需要考慮的一個例子 - 假設您想按天分組數據,日期存儲在UTC
中,但您的客戶端位於。
在2012-12-31 08:00:00
的UTC
上創建了一行,但您保存了2012-12-31
。
$date = new DateTime('2012-12-31', new DateTimeZone('UTC'));
echo $date->setTimezone(new DateTimeZone('America/Los_Angeles'))->format('Y-m-d');
//2012-12-30
$datetime = new DateTime('2012-12-31 08:00:00', new DateTimeZone('UTC'));
echo $datetime->setTimezone(new DateTimeZone('America/Los_Angeles'))->format('Y-m-d');
//2012-12-31
日期應反映PST 2012-12-31
,但與出小時偏移它會被錯誤地轉換。另外,正如塞繆爾庫克所回答的,除非您在一個時區內將datetime
明確地存儲在您的數據庫中,否則您應該存儲時區,以便知道您的轉換來自何處。
1
除了節省時間,您還應該保存當天節省的時間。這將有效地確保,當你改變到其他時區時,你知道什麼是時間的基礎。
例:2012-11-21T15:52:01+0000
相關問題
- 1. 日期和時間轉換爲其他一些時區在java
- 2. 想要將GMT日期時間轉換爲IST日期時間
- 3. 將Java日期轉換爲其他時間日期格式
- 4. 將UTC時間戳轉換爲其他時區特定時間
- 5. 將日期時間轉換爲時間
- 6. Android:將實際日期和時間轉換爲millis和其他時區
- 7. 給定日期/時間和時區,如何將其轉換爲UTC時間戳?
- 8. 調整時區 - 將XML日期時間轉換爲SQL日期時間
- 9. JavaScript:將UTC日期時間轉換爲傳遞時區日期時間
- 10. 將數據庫中的日期轉換爲其他時區
- 11. 新日期(UTCstrings),將UTCStrings轉換爲其他時區(非本地)
- 12. 儘管將日期時間轉換爲當地時間,但Rails將日期時間存儲爲GMT
- 13. 將日期從一個時區轉換爲java中的其他時區
- 14. 將小時轉換爲日期時間
- 15. 試圖將日期轉換爲時間戳,但是當我將其轉換回日期時,日期不一致
- 16. 日期時間時區轉換錯誤
- 17. 試圖將存儲爲日期時間的nvarchar轉換爲int
- 18. 如何將UTC時間轉換爲其他時區(「CST」,「IST」)
- 19. 將unix時期時間戳轉換爲TSQL日期時間
- 20. 將C#日期時間轉換爲XML日期時間類型
- 21. 將日期和時間轉換爲日期+時間戳
- 22. 將時間和日期轉換爲mysql日期時間
- 23. 將日期時間轉換爲另一日期時間
- 24. 將日期,日期時間轉換爲時間戳
- 25. 將日期時間int轉換爲日期時間
- 26. 將當地日期時間轉換爲UTC日期時間
- 27. 如何將IronPython日期時間轉換爲.NET日期時間?
- 28. C#將日期時間轉換爲WCF日期時間格式
- 29. Python將秒轉換爲日期時間日期和時間
- 30. 將UTC日期時間轉換爲日期時間偏移
如果您計劃基於時區的有效時間,爲什麼不存儲時間?似乎在某個日期調整時區對我來說是浪費。 – Jeremy1026
更好地存儲時間戳而不是日期 –
根據手冊中的示例,「2012-12-31」與「2012-12-31 00:00:00」相同,如果您構造此沒有時區的對象,那麼PHP將使用你的計算機時區。 –