我希望从(1800 + 0100)显示GMT的时间

时间:2011-02-02 10:17:00

标签: c# gmt

我在varchar数据类型的表中有一个字段,其中包含1800 + 0100的时间,如何在格林威治标准时间19:00显示它?是否有任何C#方法将时间作为1800 + 0100并转换为19:00?

提前致谢。任何帮助将不胜感激。

4 个答案:

答案 0 :(得分: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 - 那么您需要手动解析字符串,或者可能在将其传递给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

答案 1 :(得分:0)

DateTime类支持DateTime个{{1}}个对象。您可以通过添加任何您想要的时间单位将一次转换为另一种时间。

答案 2 :(得分:0)

您可以使用DateTimeOffset。您从constructing开始一个时间和偏移量的实例,然后只获取UtcDateTime属性。

答案 3 :(得分:0)

请注意,尽管英国夏季和冬季只使用GMT(UniversalTime)。