2011-02-02 96 views
2

我有一個表中的字段與varchar數據類型,其中包含時間1800 + 0100,我怎麼能顯示它像這樣的格林威治標準時間19:00?有沒有C#方法需要1800 + 0100的時間並轉換爲19:00?我想顯示的時間格林威治標準時間從(1800 + 0100)

在此先感謝。任何幫助將不勝感激。

+4

1800 + 0100實際上是17:00 GMT,*不是* 19:00。 – LukeH 2011-02-02 10:21:27

+0

它UTC夠好嗎? – 2011-02-02 10:23:05

回答

5

如果你的時間實際上是在ISO-8601 format,那麼你可以這樣做:

DateTime dt = DateTime.ParseExact("1800+0100", "HHmmzzz", null, 
            DateTimeStyles.AdjustToUniversal); 
Console.WriteLine(dt.TimeOfDay); // 17:00:00 

但是請注意,這(正確)輸出「17:00:00」,不「19:00:00 「

如果你的字符串不是ISO-8601格式 - 和「1800 + 0100」真的是代表19:00 GMT - 那麼你就需要手動解析字符串,或可能預 - 在將它傳遞給ParseExact之前處理它。也許是這樣的:

string s = "1800+0100"; 

string temp = s.Substring(0, 4) + ((s[4] == '+') ? '-' : '+') + s.Substring(5); 
DateTime dt = DateTime.ParseExact(temp, "HHmmzzz", null, 
            DateTimeStyles.AdjustToUniversal); 
Console.WriteLine(dt.TimeOfDay); // 19:00:00 
0

DateTime類爲DateTime對象支持Add methods對象。您可以通過添加任何您想要的時間單位將一次轉換爲另一次。

0

要小心的是,英國只在夏天使用GMT(UniversalTime)在冬季和夏季的時間。

相關問題