解析JSON日期字符串时DateTime.ParseExact报错,求问题原因及解决
问题出在自定义日期格式字符串的错误使用
你遇到的错误核心是格式字符串的占位符完全用错了,.NET的DateTime格式符是区分大小写的,每个占位符有严格的定义,下面逐个拆解你的问题:
- 错误的
DD:这个代表一年中的第几天(比如1月1日是001),而你需要的是月份中的日期,应该用小写的dd - 错误的
YYYY:这个代表ISO周年(和普通年份可能有差异,比如跨年的周),普通年份应该用小写的yyyy - 错误的
MI:分钟的正确占位符是小写的mm,MI不是合法的格式符 - 错误的
HH:HH是24小时制的小时(00-23),但你的字符串是12小时制带AM/PM标记,应该用小写的hh - 错误的直接写
AM:12小时制的上午/下午标记应该用tt,它会自动匹配字符串中的AM/PM
修正后的代码
DateTime.ParseExact("11/1/2017 12:00:40 AM", "MM/dd/yyyy hh:mm:ss tt", CultureInfo.InvariantCulture)
额外注意事项
如果你的日期可能出现单数字的月份/日期(比如1/5/2024),上面的格式依然有效,因为MM和dd会自动匹配1位或2位的数字;如果强制要求两位数字,那字符串里就得是01/05/2024,格式符不变。
另外,确保你的CultureInfo设置正确,这里用InvariantCulture是合适的,因为你的日期格式是美式的月/日/年。
内容的提问来源于stack exchange,提问作者gsiradze
相关产品推荐
相关产品推荐

