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

C# 如何使用C从大于24小时的时间格式的字符串中获取总无秒数#,c#,c#-4.0,datetime,C#,C# 4.0,Datetime,我需要以大于24小时的时间跨度格式从字符串中获取总秒数。下面是我使用的代码截取 static void Main(string[] args) { string s = "24:55:00.00"; double d = (int)TimeSpan.Parse(s).TotalSeconds; Console.WriteLine(d); } 当我在上面运行时,获取异常OverflowException未被处

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

static void Main(string[] args)
    {
        string s = "24:55:00.00";
        double d = (int)TimeSpan.Parse(s).TotalSeconds;
        Console.WriteLine(d);            
    }
当我在上面运行时,获取异常OverflowException未被处理。当我使用字符串的时间少于24小时时,请说23:55:05.09。代码运行良好。这是C#的真正限制还是我遗漏了什么


谢谢

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

OverflowException s表示小于的数字 TimeSpan.MinValue或大于TimeSpan.MaxValue。 -或者-至少有一个天、小时、分钟或秒组件超出其有效范围。

最长工作时间为23小时、60分钟等

将字符串更改为:

1:0:55:00.00

要能够解析24小时55分钟的时间跨度的字符串表示形式,它将等于24h55m。您必须使用此字符串:

1.0:55:00.00 这将返回字符串:

1.0:55:00 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分、秒、毫秒以上的时间,您可以根据我提供的代码轻松添加它。

如果输入字符串为
100:55:00.00
,该怎么办?我认为上述代码将产生122:02:00.00的错误结果。因为我们在s=s.Substring(2)中硬编码了值2;更好的办法是获取以小时为单位的字符数,并使用上面语句中的值
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);