我知道System.TimeZone類以及DateTime.ToString()方法的許多用途。我無法找到的是一種將DateTime轉換爲除時間和日期信息之外還包含三個字母的時區縮寫的字符串的方法(事實上,與StackOverflow的相對工具提示方式大致相同時間顯示作品)。如何使用縮短的時區顯示日期時間?
爲了讓每個人都能輕鬆遵循以及消費的例子,讓我們繼續使用StackOverflow示例。如果您查看相對時間顯示的工具提示,則會顯示完整日期,時間包括12小時格式的秒數,AM/PM指定,以及三個字母的時區縮寫(在他們的情況下爲Coordinated世界時)。我意識到我可以通過使用內置方法輕鬆獲取GMT或UTC,但我真正想要的是在這種情況下,在本地—的時間,在Web服務器上。
如果我們的網絡服務器運行的是Windows Server 2k3並且它的時區設置爲CST(或者,直到daylight saving切換回來,CDT是它?),我希望我們的ASP.NET Web應用程序顯示DateTimes相對於該時區以及格式化以最終顯示「CST」。我意識到我可以很容易地對此進行硬編碼,但出於健壯性的考慮,我真的更喜歡基於運行代碼的OS環境設置的服務器的解決方案。
現在,我所擁有的一切,但使用下面的代碼時區縮寫:
myDateTime.ToString("MM/dd/yyyy hh:mm:ss tt")
該款顯示器:
10/07/2008下午三時40分31秒
所有我想(和它的並不多,答應!)是,它說:
10/07/2008下午三時四十分31秒CDT
我可以使用System.TimeZone.CurrentTimeZone並使用它來正確顯示「中央夏令時」,但是......爲了簡潔起見,這太長了。然後,我是否堅持寫一個字符串操作例程去除空白和任何非大寫字母?雖然這可能工作,這似乎令人難以置信的黑客我...
Googling環顧這裏並沒有產生任何適用於我的具體問題。
這種方法有一定的缺陷。例如,在亞利桑那州,他們使用Mountain Standard Time並且沒有遵守夏令時,.NET有一個DaylightName和一個標準名稱爲「美國山區標準時間」,它將用您的方法顯示「UMST」。我期望看到「MST」(夏季和冬季)。不幸的是,.NET框架似乎在這裏不足,所以我使用了靜態查找表。 – codemonkey 2012-02-08 20:57:48
這對於很多時區都不適用,例如** ACT ** _Acre Time_(UTC -5) – Tanmay 2017-11-09 08:50:18