我在varchar数据类型的表中有一个字段,其中包含1800 + 0100的时间,如何在格林威治标准时间19:00显示它?是否有任何C#方法将时间作为1800 + 0100并转换为19:00?
提前致谢。任何帮助将不胜感激。
答案 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)。