VB.NET中TimeSpan求和时分秒字符串不显示天数仅展示总时分秒问题
解决方案
TimeSpan结构默认的ToString()方法会将大于24小时的时长自动换算为「天.时:分:秒」格式,要得到累计总小时的展示效果,不需要修改求和逻辑,仅需要对最终的求和结果手动做格式化输出即可。
修改后的完整代码如下:
Dim l1 As String = "14:32:45" Dim l2 As String = "07:43:13" Dim l3 As String = "00:00:00" Dim l4 As String = "00:00:00" Dim l5 As String = "18:34:54" Dim l6 As String = "00:00:00" Dim l7 As String = "12:00:34" Dim ts1 As TimeSpan = TimeSpan.Parse(l1) Dim ts2 As TimeSpan = TimeSpan.Parse(l2) Dim ts3 As TimeSpan = TimeSpan.Parse(l3) Dim ts4 As TimeSpan = TimeSpan.Parse(l4) Dim ts5 As TimeSpan = TimeSpan.Parse(l5) Dim ts6 As TimeSpan = TimeSpan.Parse(l6) Dim ts7 As TimeSpan = TimeSpan.Parse(l7) Dim ttsum As TimeSpan = ts1 + ts2 + ts3 + ts4 + ts5 + ts6 + ts7 ' 新增自定义格式化逻辑 Dim totalHours As Integer = ttsum.Days * 24 + ttsum.Hours Dim result As String = $"{totalHours:D2}:{ttsum.Minutes:D2}:{ttsum.Seconds:D2}" MsgBox(result)
格式化逻辑说明
- 通过
ttsum.Days * 24 + ttsum.Hours计算累计总小时数,避免直接取TotalHours属性带来的浮点精度问题 D2格式符会保证小时、分钟、秒都至少显示2位,不足时自动补前导零,和原时间字符串的格式保持一致- 运行后输出结果为
52:51:26,符合预期要求
内容的提问来源于stack exchange,提问作者Break Inside
相关产品推荐
相关产品推荐

