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

C#中解析HH:mm:ss字符串为TimeSpan异常:24:00:00被识别为24天

问题原因

TimeSpan.Parse的默认解析逻辑会将第一段数值≥24的冒号分隔字符串识别为天数:小时:分钟格式,因此"24:00:00"会被解析为24天而非24小时。

正确实现方式

方式一:使用TimeSpan.ParseExact指定解析格式

通过明确指定小时:分钟:秒的格式,强制解析逻辑按预期处理:

string cacheExpirationTime = "24:00:00";
var cacheOptions = new MemoryCacheOptions()
{
    ExpirationScanFrequency = TimeSpan.ParseExact(
        cacheExpirationTime, 
        @"hh\:mm\:ss", 
        CultureInfo.InvariantCulture,
        TimeSpanStyles.None)
};

格式字符串@"hh\:mm\:ss"明确要求按小时:分钟:秒解析,即使小时数超过23也不会被识别为天数。

方式二:拆分字符串后直接构造TimeSpan

如果格式固定为小时:分钟:秒,也可以手动拆分数值后构造TimeSpan,逻辑更直观:

string cacheExpirationTime = "24:00:00";
var timeParts = cacheExpirationTime.Split(':');
var hours = int.Parse(timeParts[0]);
var minutes = int.Parse(timeParts[1]);
var seconds = int.Parse(timeParts[2]);

var cacheOptions = new MemoryCacheOptions()
{
    ExpirationScanFrequency = new TimeSpan(hours, minutes, seconds)
};

补充说明:两种方式最终得到的TimeSpan均表示24小时(与1天的tick数完全一致),对MemoryCacheOptions.ExpirationScanFrequency的功能没有影响。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 15:15:31