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

Unity3D中DateTime.ParseExact抛出字符串格式异常问题

解决DateTime.ParseExact解析"00:10:47:18"时的格式异常问题

你遇到的问题核心在于:你试图用DateTime来解析一个表示时间段的字符串,但DateTime是用来表示具体日期时间点的类型,而且格式字符串的语义和实际需求不匹配。

问题拆解

你的目标字符串是"00:10:47:18",看起来是天:时:分:秒的时间段格式,但你用了"dd:HH:mm:ss"作为格式字符串:

  • dd代表的是月份中的日期(取值范围是01-31),而你的字符串第一个部分是00,这超出了dd的合法范围,直接触发格式异常。
  • 就算把格式改成带引号的"'dd':'HH':'mm':'ss'"也没用,引号只是转义冒号,但dd的语义还是月份日期,00依然不合法。

正确解决方案

如果这个字符串表示的是一段持续时间(比如0天10小时47分18秒),你应该用TimeSpan类型来解析,而不是DateTime。TimeSpan专门用于处理时间间隔,完美支持天:时:分:秒的格式:

// 方式1:指定格式解析
TimeSpan ts = TimeSpan.ParseExact("00:10:47:18", @"d\:hh\:mm\:ss", null);
// 方式2:直接解析(TimeSpan默认支持这种格式)
TimeSpan ts = TimeSpan.Parse("00:10:47:18");

如果你确实需要把这个时间段转换成某个基准时间的DateTime,可以在解析出TimeSpan后再和基准时间相加:

DateTime baseTime = DateTime.Today; // 或者你需要的任意基准日期
DateTime D = baseTime + ts;

额外说明

如果你坚持要用DateTime来解析(不推荐,因为语义完全不符),你需要把第一个部分改成合法的日期值(比如01),但这样得到的DateTime是某个月份的1日10点47分18秒,显然不是你想要的结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:33:35