C#解析ICalendar日期报错:DateTime格式无效(Godot 4.2环境)
问题排查与解决
核心原因
你遇到的System.FormatException有两个关键诱因:
- 小时格式符不匹配:格式串里的
hh是12小时制的小时标识,而目标时间字符串中的15属于24小时制的时间值,12小时制的小时范围是1-12,15超出这个范围导致解析失败。 - 大小写不严格匹配:目标字符串中的时间分隔符是大写
T,但你的格式串里用了小写t,ParseExact默认是严格匹配模式,大小写不一致也会触发解析错误。
解决方法
直接修正格式串即可,不需要修改原时间字符串:
- 将格式串中的
hh替换为HH(24小时制小时标识); - 将格式串中的
t替换为大写T,和原字符串的分隔符保持一致。
修正后的代码示例:
string icalTime = "20231120T153000"; DateTime parsedTime = DateTime.ParseExact(icalTime, "yyyyMMddTHHmmss", System.Globalization.CultureInfo.InvariantCulture);
使用CultureInfo.InvariantCulture替代null,可以避免系统区域设置对解析逻辑的干扰,稳定性更强。
如果之前尝试移除T的操作,对应的格式串应该改为"yyyyMMddHHmmss",但直接修正格式串匹配原字符串的方式更符合ICalendar的标准格式规范。
内容的提问来源于stack exchange,提问作者Tshadow123
相关产品推荐
相关产品推荐

