如何使用 C# 从时间格式大于 24 小时的字符串中获取总秒数



我需要从大于 24 小时的时间跨度格式的字符串中获取总秒数。下面是我使用的代码截图

static void Main(string[] args)
    {
        string s = "24:55:00.00";
        double d = (int)TimeSpan.Parse(s).TotalSeconds;
        Console.WriteLine(d);            
    }

当我运行在上面时,异常溢出异常未处理. 当我使用小于 24 小时的字符串时,比如 23:55:05.09 . 代码工作正常。 是C#的真正限制还是我错过了一些东西

谢谢

您不能使用超过 23 小时的时间

溢出异常 s 表示小于 TimeSpan.MinValue 或大于 TimeSpan.MaxValue。 -或- 天、小时、分钟或秒组件中至少有一个超出其有效范围。

请参阅此处的 MSDN

最大小时数为 23 小时,分钟 60 等。

将字符串更改为:

1:0:55:00.00

它将等于 24h55m

为了能够解析 24 小时 55 分钟时间跨度的字符串表示形式,您必须使用此字符串:

1.0:55:00.00

如果不确定TimeSpan使用的字符串表示形式,可以执行反向转换:

(TimeSpan.FromDays(1) + TimeSpan.FromMinutes(55)).ToString()

这将返回字符串:

1.0:55:00

不能使用超过 23 小时、59 分钟、59 秒、99 毫秒的时间跨度 如果要输入超过 24 小时的时间度,可以使用此代码:

string s = "24:55:00.00";
string hoursS = s.Split(':')[0];
double hours = int.Parse(hoursS);
double totalSeconds = hours*3600;
s = s.Substring(hoursS.Length);
s = "00" + s;
double d = (int)TimeSpan.Parse(s).TotalSeconds;
totalSeconds += d;
Console.WriteLine(totalSeconds);

如果您想在字符串中使用超过 60 分钟、秒、毫秒,您可以根据我提供的代码轻松添加它。

最新更新