C# DateTime转换异常求助:日期时间字符串解析失败
问题分析与修正
你的问题出在自定义格式字符串的字母大小写错误,C#的DateTime格式符区分大小写,具体错误点如下:
1. 日期格式错误:mm 是分钟而非月份
你使用的yyyymmdd里,小写mm代表的是分钟,不是月份。正确的月份格式符是大写MM。这导致解析时,字符串里的05被识别为分钟,月份则取DateTime默认值1月,所以dateTest的月份始终为1月。
2. 时间格式错误:hh 是12小时制而非24小时制
小写hh对应12小时制的小时(范围1-12),而你的输入17是24小时制时间,超出了hh的解析范围,因此多数情况下解析失败,timeTest被设为默认的00:00;只有输入时间在1-12点时,解析才会正常。正确的24小时制小时格式符是大写HH。
修正后的代码
// 日期格式修正为yyyyMMdd(MM表示月份) string datePattern = "yyyyMMdd"; DateTime.TryParseExact(d, datePattern, null, DateTimeStyles.AssumeLocal, out dateTest); // 时间格式修正为HHmmss(HH表示24小时制小时) string timePattern = "HHmmss"; DateTime.TryParseExact(t, timePattern, null, DateTimeStyles.AssumeLocal, out timeTest);
如果需要将日期和时间合并为一个DateTime对象,也可以直接用组合格式一次性解析,效率更高:
string combinedPattern = "yyyyMMdd,HHmmss"; DateTime.TryParseExact(combinedString, combinedPattern, null, DateTimeStyles.AssumeLocal, out fullDateTime);
内容的提问来源于stack exchange,提问作者user1006221
相关产品推荐
相关产品推荐

