将时间跨度设置为24小时以上,而不是使用天部分



在Visual Basic.NET中,我正在尝试将以秒为单位的运行时间转换为hh:mm:ss格式,该格式可以超过24小时。

例如,当尝试使用以下代码将86400秒转换为时间跨度时:

dim sec = 86400
dim res = TimeSpan.FromSeconds(sec).ToString

输出为"1.00:00:00">

而我想要的输出是"24:00:00">

怎么可能这样做?

您只需要进行计算:

Dim secs = 86400
Dim ts = TimeSpan.FromSeconds(secs)
Dim res = String.Format("{0}:{1:00}:{2:00}", (ts.Days * 24 + ts.Hours), ts.Minutes, ts.Seconds)
Console.WriteLine(res)

输出:

24:00:00

如果小时数至少需要两位数字,请使用"{0:00}:{1:00}:{2:00}"

(如果你认为String.Format("{0}:{1:00}:{2:00}", Math.Floor(ts.TotalHours), ts.Minutes, ts.Seconds)看起来更好,你可以使用它。(

您所要求的内容既不能作为标准格式也不能作为自定义格式。

您希望将总小时数作为一个四舍五入的整数,后跟分钟和秒部分。自定义格式说明符仅适用于特定部件。

您可以使用TimeSpan.TotalHours属性以双精度检索小时数,并使用自定义说明符格式化字符串的其余部分。

Dim ts=TimeSpan.FromDays(1)
String.Format("{0:00}:{1:mm:ss}",Math.Floor(ts.TotalHours), ts)

Dim ts=TimeSpan.FromSeconds(61)
String.Format("{0:00}:{1:mm:ss}",Math.Floor(ts.TotalHours), ts)

最新更新