我需要以大于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#的真正限制还是我遗漏了什么
由于
答案 0 :(得分:6)
你的工作时间不能超过23小时
OverflowException s表示小于的数字 TimeSpan.MinValue或大于TimeSpan.MaxValue。 - 或 - 至少有一天,小时,分钟或秒组件超出其有效范围。
请参阅here at MSDN
最长小时数为23,分钟数60等。
将您的字符串更改为:
1:0:55:00.00
它将等于24h55m
答案 1 :(得分:2)
为了能够解析时间跨度为24小时55分钟的字符串表示,您必须使用此字符串:
1.0:55:00.00
如果您不确定TimeSpan
使用的字符串表示,您可以执行反向转换:
(TimeSpan.FromDays(1) + TimeSpan.FromMinutes(55)).ToString()
这将返回字符串:
1.0:55:00
答案 2 :(得分:1)
您不能使用时间范围超过 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分钟,几秒,几毫秒,您可以根据我提供的代码轻松添加它。