You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ASP.NET中DateTime.ParseExact报无效日期时间错误如何解决

错误原因

DateTime.ParseExact 要求传入的日期字符串必须和指定的格式字符串严格逐段匹配,你当前代码里的格式定义和实际待解析字符串结构完全不符,必然抛出无效日期时间错误:

  • 代码中指定的格式"M/dd/yyyy h:mm:ss tt"仅能匹配类似5/13/2022 1:24:00 PM结构的字符串:数字月份、斜杠分隔、4位年份、12小时制时间、带AM/PM标识。
  • 实际传入的expDate值为"13-May-22 13:24:00",结构为数字日期、短英文月份名、2位年份、24小时制时间,和定义的格式没有匹配性。
修复方案

将格式字符串替换为和实际输入匹配的格式即可,修正后的代码如下:

DateTime oDate1 = DateTime.ParseExact(
  expDate, 
  "dd-MMM-yy HH:mm:ss", 
  System.Globalization.CultureInfo.InvariantCulture);

用到的格式符说明:

  • dd:两位数字的日期
  • MMM:三位字母缩写的月份名称,在InvariantCulture规则下可识别May这类英文月份缩写
  • yy:两位数字的年份
  • HH:24小时制的两位小时值,可直接匹配13点这类24小时制时间表示

如果业务场景中可能传入多种不同格式的日期字符串,可以把所有支持的格式放到数组中传入方法,兼容多格式输入:

string[] allowedFormats = new string[] { "dd-MMM-yy HH:mm:ss", "M/dd/yyyy h:mm:ss tt" };
DateTime oDate1 = DateTime.ParseExact(
  expDate, 
  allowedFormats, 
  System.Globalization.CultureInfo.InvariantCulture,
  System.Globalization.DateTimeStyles.None);

内容的提问来源于stack exchange,提问作者CM05

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 01:24:21