C#解析dd-MM-yy/HH:mm:ss格式字符串为DateTime时抛错如何解决
报错根因
.NET DateTime格式规范中,代表两位公历年份的格式符为小写yy,你代码中使用的大写YY是ISO 8601周历年份占位符,和常规公历年计算逻辑不一致,无法匹配输入字符串中的21年份字段,所以触发格式异常。
修复后的代码
using System.Globalization; DateTime dateTime; string strTime = "13-08-21/11:14:11"; // 仅将原格式中的YY修改为yy即可 string strFormat = @"dd-MM-yy'/'HH:mm:ss"; dateTime = DateTime.ParseExact(strTime, strFormat, CultureInfo.InvariantCulture);
运行后得到的dateTime值即为预期的2021年8月13日 11:14:11。
补充说明
- 固定区域性(
CultureInfo.InvariantCulture)默认将两位年份映射到1930~2029区间,如果你需要调整两位年份对应的世纪范围,可以修改对应区域性实例的Calendar.TwoDigitYearMax属性。 - 格式字符串中用单引号包裹
/的写法是合规的,可以确保分隔符严格匹配输入字符串,不会被解析为区域性相关的日期分隔符。
内容的提问来源于stack exchange,提问作者Ivan Ristic
相关产品推荐
相关产品推荐

