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

C#中使用TimeSpan.ParseExact解析Excel特殊时长格式失败问题求助

解决TimeSpan.ParseExact解析带括号时长失败的问题

我一眼就揪出问题啦——你在TimeSpan的格式字符串里用了小写的h,这是12小时制的小时说明符,合法取值范围是1-12,但你的输入小时是0,这直接触发了解析失败!

修复方案

把你的durationFormat改成"(H:m:ss.f)",核心就是把小写的h换成大写的H。修改后的代码如下:

var rawDuration = (string)WorkSheet.Range[startValue + (offset)].Value2;
// 用大写H表示24小时制小时,适配0值场景
TimeSpan duration = TimeSpan.ParseExact(rawDuration, "(H:m:ss.f)", null);
return duration;

为什么DateTime的代码能正常工作?

因为DateTime里的HH是24小时制的小时说明符,允许0-23的数值,和你输入的06完美匹配;而TimeSpan的格式规则和DateTime有细微差异:

  • 小写h:对应12小时制小时,必须在1-12之间,0是不合法值
  • 大写H:对应24小时制小时,支持0及以上的任意整数,完全适配你的输入场景

快速验证

如果你想先确认格式正确性,可以写一段简单的测试代码:

var testStr = "(0:0:20.0)";
var format = "(H:m:ss.f)";
var result = TimeSpan.ParseExact(testStr, format, null);
Console.WriteLine(result); // 输出 00:00:20

这段代码应该能正常运行,输出符合预期的TimeSpan结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 05:27:31