您是否知道該檢查是否存在API?例行檢查給定日期是夏季還是冬季
回答
GetTimeZoneInformation是你需要的。
您可以調用它並檢查返回值以檢測呼叫時是否啓用夏令時。它還填充了包含切換到夏令時和夏令時規則的結構。使用這種結構填充以及UTC格式的任何給定時間,可以相對容易地計算出該時間是否符合夏令時或標準時間。
一切順利,但GetTimeZoneInformation和GetDynamicTimeZoneInformation僅返回當前時區設置。如果當前的TZ(即我的服務器所在的地方)不是我想要檢查的TZ,該怎麼辦?
比方說,我有一臺服務器應用程序可以爲結帳預訂書籍。您可以說「我想現在查看」或「我將需要在將來datetime」查看。結帳時間在用戶的當地時間輸入,並在存儲之前轉換爲UTC。當用戶檢索他們的結賬列表時,時間被轉換回他們的本地進行顯示。
假設服務器住在紐約,並在美國的標準2007年後DST規則下運行。時區設置爲美國東部,目前它是2009年7月27日15:30,因此DST爲ON。
紐約的用戶輸入當地的日期和時間。從ET轉換到UTC - 不是問題。他們進入未來的日期 - 沒問題。我使用上面兩個API調用之一併找出它。
但是,悉尼的用戶想要預訂結帳。她在12/13/2009 18:25要求在悉尼當地時區結賬。我無法使用當地的TZ信息 - 悉尼和紐約不遵守相同的DST規則。我如何着手加載悉尼目前的TZ信息並找出是否有任意日期是DST?
對於Win7和Server2008/R2,在MS-Windows上有一些更新(但仍然不完整)的方法。請參閱知識庫文章2731771.另請參閱ICU和Boost :: locale。 Windows例程(GetTimeZoneInformationForYear)要求您將UTC轉換爲最低年份。幸運的是,在我所知道的1月1日左右沒有時區正確轉移。您可以使用SystemTimeToTzSpecificLocalTime(Ex)將本地時間正確轉換爲與本地系統時區不同的時區。 如果沒有這些方法,您需要掃描註冊表以加載適當的時區信息和動態信息,然後調用SystemTimeToTzSpecificLocalTime。 使用諸如_tzset和localtime之類的東西時要小心,因爲即使您的TZ設置適用於澳大利亞,某些系統(如Windows)也會假設使用美國DST規則等許多(大部分不正確)的事情。
您會認爲Windows和Linux都會採用UTCtoLocal(const char * tzName,time_t inTime,struct tm * outTime)等類似的方法來考慮所有動態/歷史DST規則給出的區域。根據您運行的系統,tzName應該能夠採用適當的名稱,如「中央標準時間」或「美國/芝加哥」。我甚至願意允許一個兩個調用步驟,例如: GetTimeZoneInformation(const char * tzName,TIME_ZONE_INFORMATION * outTZInfo) UTCtoLocal(const TIME_ZONE_INFORMATION * inTZInfo,time_t inTime,struct tm * outTime) 您知道OS已經在做當它加載系統時區信息並且庫執行本地/ UTC轉換時。
- 1. 夏季和冬季JAVA
- 2. 在冬季將夏季日期轉換爲utc?
- 3. 紅寶石確定季(秋,冬,春季或夏季)
- 4. Zend的日期和夏季
- 5. Java的時區和夏令冬季
- 6. PHP的MySQL date.timezone和冬季和夏季時間
- 7. 季節性網站,冬季/夏季,最佳方式之間的分割?
- 8. 如何檢查日期是否在某個星期或季度
- 9. 查找給定日期的一個季度的結束日期
- 10. 春季啓動 - 檢查是否達到目標日期對象
- 11. 冬季與發現
- 12. 檢查給定日期是否過去
- 13. 是否夏季時間時間原因日期時間計算成爲負
- 14. 如何查詢linq查詢日期是在月,季或一年
- 15. 春季使用@ModelAttribute冬眠
- 16. 春季檢查是否沒有參數
- 17. 檢查指定日期是今天,昨天還是未來日期
- 18. SPARQL在希臘的夏季
- 19. DATEDIFF不包括夏季
- 20. 檢查一個html日期輸入是在給定日期後
- 21. 檢查給定的日期是否在varchar日期列表中
- 22. 檢查給定日期是否適合日期範圍
- 23. 使用Javascript計算給定日期是當前日期還是將來日期?
- 24. 檢查日期是週日還是週末?
- 25. 檢查一個變量是星期六還是星期日
- 26. 春季註釋 - 好還是壞?
- 27. MongoRepository JSON日期查詢(春季)
- 28. C#類選擇當前季度而不是上一季度的日期
- 29. 春季安全檢查生效日期和過期日期登錄之前
- 30. 的JavaScript +定義日期每季度
是否有任何Linux相當於?或者更好的封裝它的lib?我會檢查提升;) – neuro 2009-07-17 07:51:58