如何使用 C# 从时间格式大于 24 小时的字符串中获取总秒数
本文关键字:字符串 获取 小时 何使用 时间 大于 格式 | 更新日期: 2023-09-27 18:36:46
我需要从大于 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 分钟、秒、毫秒,您可以根据我提供的代码轻松添加它。