2

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

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

4

4 回答 4

5

如果您的时间实际上是ISO-8601 格式,那么您可以这样做:

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
于 2011-02-02T10:26:52.183 回答
0

该类DateTime支持对象的Add方法DateTime您可以通过添加您想要的任何时间单位将一个时间转换为另一个时间。

于 2011-02-02T10:20:02.380 回答
0

您可以为此使用DateTimeOffset 。您首先从时间和偏移量构造一个实例,然后获取UtcDateTime属性。

于 2011-02-02T10:25:30.460 回答
0

请注意,尽管英国仅在冬季使用 GMT(通用时间),而在夏季使用夏季时间。

于 2011-02-02T10:34:38.560 回答