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

时间:2013-10-25 06:54:04

标签: 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小时的字符串时,比如23:55:05.09。代码工作正常。这是C#的真正限制还是我遗漏了什么

由于

3 个答案:

答案 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分钟,几秒,几毫秒,您可以根据我提供的代码轻松添加它。