C#解析MM/dd/yyyy hh:mm:ss格式字符串为DateTime报错问题
问题原因
- 你当前使用的格式字符串未包含匹配
AM/PM上下午标识的tt说明符,和输入字符串的结构不匹配,这是报错的核心原因。 - 格式字符串中使用的
MM要求月份必须为两位数字(如07代表7月),但你的示例输入中月份为单数字7,如果实际获取的时间数据中月份、日期均不会补前导零,也会导致格式匹配失败。
解决方法
调整格式字符串,增加tt说明符匹配上下午标识,同时将月份、日期的格式符调整为支持单/双位的M和d即可:
string s = "7/30/2021 12:00:00 AM"; DateTime dt = DateTime.ParseExact(s, "M/d/yyyy hh:mm:ss tt", CultureInfo.InvariantCulture);
补充说明
如果你能确认从其他系统获取的时间字符串中,月份、日期固定为补前导零的两位格式,也可以将格式字符串改为MM/dd/yyyy hh:mm:ss tt,适配规则和你的原始写法更接近。
内容的提问来源于stack exchange,提问作者Malawirel
相关产品推荐
相关产品推荐

