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

.NET Core中dd.MM.yyyy hh:mm:ss字符串转DateTime报FormatException

异常原因定位

核心问题来自格式字符串的小时占位符使用错误:

  • 解析格式中使用的hh占位符,对应的是12小时制的小时取值范围(01-12),必须搭配AM/PM时段标识才能完成全时段解析
  • 待解析字符串中的小时值为16,属于无AM/PM标识的24小时制时间表述,12小时制占位符既无法识别大于12的小时数值,也找不到匹配的时段标识,因此触发格式匹配失败抛出FormatException
  • 此处需要使用对应24小时制的小时占位符HH(取值范围00-23),才能匹配这类24小时制时间字符串
修正后的实现代码
using System.Globalization;

// 原始待解析字符串
string dateTime = "28.11.2020 16:08:43";
// 将错误的小时占位符替换为24小时制格式完成解析
var date = DateTime.ParseExact(
    dateTime, 
    "dd.MM.yyyy HH:mm:ss", 
    CultureInfo.InvariantCulture
);
常见避坑提示
  • DateTime格式占位符大小写严格敏感,混用hh(12小时制)/HH(24小时制)是这类解析异常的最高发场景;无AM/PM标识的24小时制场景下,混用12小时制占位符会同时触发取值范围不匹配、缺失时段标识两类格式错误
  • 格式字符串中的固定分隔符(点号、冒号等)必须和待解析字符串的实际分隔符完全一致,不能存在全角/半角差异
  • 若待解析字符串存在多种可能的合法格式,可使用ParseExact的重载版本传入格式数组,一次性适配多格式解析场景

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.24 17:54:02