如何将“2013:11:21 15:11:04+02:00”格式字符串解析为DateTime类型
错误原因
抛出System.FormatException的核心问题是格式字符串的小时标识符使用错误:
- 你代码中使用的
hh代表12小时制的小时,合法取值范围为01~12,待解析字符串中的小时值是15,属于24小时制的取值范围,不符合hh的格式校验规则 - 额外注意:使用
null作为格式提供器参数时,会默认读取当前系统的区域配置,部分特殊区域可能存在自定义的时间符号规则,会导致匹配失败,推荐指定固定的固定文化信息规避区域差异问题
正确实现代码
首先需要引入命名空间:using System.Globalization;
解析为DateTime类型的正确写法:
DateTime.ParseExact("2013:11:21 15:11:04+02:00", "yyyy:MM:dd HH:mm:sszzz", CultureInfo.InvariantCulture);
如果你需要保留原始的时区偏移信息,更推荐使用DateTimeOffset类型解析:
DateTimeOffset.ParseExact("2013:11:21 15:11:04+02:00", "yyyy:MM:dd HH:mm:sszzz", CultureInfo.InvariantCulture);
内容的提问来源于stack exchange,提问作者fred_
相关产品推荐
相关产品推荐

