在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)