C# 如何使用C从大于24小时的时间格式的字符串中获取总无秒数#
我需要以大于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未被处
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);