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

如何解析无分隔符的DateTime字符串?解决2024093013580700解析报错

问题分析

解析失败核心原因有两点:

  1. 格式符不匹配24小时制:你用的hh是12小时制格式符,无法解析字符串里的13这个24小时制小时数;
  2. 格式长度与字符串不匹配:yyyyMMddhhmmss仅对应14位字符串,但目标字符串是16位;yyyyMMddhhmmsszz里的zz仅代表时区偏移小时部分,覆盖不了最后两位长度,且hh的问题仍存在。
可行解析方案

针对16位字符串2024093013580700的结构(年4+月2+日2+时2+分2+秒2+末尾2位),分两种常见场景处理:

场景1:末尾两位是毫秒(最常见)

用24小时制格式符HH搭配两位毫秒格式符ff,直接匹配完整字符串:

DateTime.ParseExact("2024093013580700", "yyyyMMddHHmmssff", CultureInfo.InvariantCulture);

场景2:末尾两位是时区偏移分钟

如果最后两位代表时区偏移的分钟(比如对应+0000时区),用带分钟的时区格式符zzzz,同时替换hh为HH:

DateTime.ParseExact("2024093013580700", "yyyyMMddHHmmsszzzz", CultureInfo.InvariantCulture);

备选方案:手动拆分处理

若不确定末尾两位含义,可先解析前14位基础时间,再单独处理末尾部分:

var inputStr = "2024093013580700";
// 解析前14位日期时间
var baseDateTime = DateTime.ParseExact(inputStr.Substring(0, 14), "yyyyMMddHHmmss", CultureInfo.InvariantCulture);
// 处理末尾两位(示例转为毫秒,其他含义可自行修改逻辑)
var extraPart = int.Parse(inputStr.Substring(14, 2));
var finalDateTime = baseDateTime.AddMilliseconds(extraPart * 10); // 两位毫秒转实际毫秒值

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 16:12:34