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

相同格式下DateTime解析结果不一致的原因及解决方案

问题原因

  • CultureInfo.InvariantCulture 默认的短日期解析规则是 MM/dd/yyyy(月/日/年)格式:
    • 第一个日期10/10/2021的月和日数值都是10,刚好符合规则,所以解析成功
    • 第二个日期18/11/2021的首位数值是18,超出了月份的有效值范围(1-12),解析直接失败,输出的secondDate是DateTime类型的默认值1/1/0001 12:00:00 AM
  • 你输入的两个日期实际是 dd/MM/yyyy(日/月/年)格式,和默认规则不匹配,才会出现看起来格式一致但第二个解析失败的情况。

修复方案

改用DateTime.TryParseExact方法,明确指定和输入匹配的格式字符串,避免依赖默认解析规则的歧义问题。

修改后的代码示例:

// 明确指定输入的日期格式为 日/月/年 时:分:秒
string dateFormat = "dd/MM/yyyy HH:mm:ss";
bool first = DateTime.TryParseExact("10/10/2021 00:00:00", 
               dateFormat,
               CultureInfo.InvariantCulture, 
               DateTimeStyles.None, 
               out DateTime firstDate);

bool second = DateTime.TryParseExact("18/11/2021 23:59:59",
               dateFormat,
               CultureInfo.InvariantCulture,
               DateTimeStyles.None,
               out DateTime secondDate);

Console.WriteLine(firstDate + " --- " + secondDate);

修改后两个日期都会被正确解析,输出结果和预期一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 16:36:05