如何将C# TimeSpan转换为天数计入小时的hh:mm:ss格式
解决TimeSpan按总小时数格式化为hh:mm:ss的问题
针对你提供的TimeSpan对象(9天4小时,总时长220小时),默认ToString()返回9.04:00:00,要得到220:00:00的格式,需要手动处理总小时数——因为TimeSpan的标准格式字符串没有直接输出总小时数的占位符,具体实现方式如下:
方法一:直接拼接总小时、分钟、秒
利用TimeSpan的TotalHours属性获取总时长的小时数(取整数部分),再结合Minutes和Seconds属性,通过字符串格式化确保分钟和秒为两位数字:
TimeSpan ts = new TimeSpan(9, 4, 0, 0); string formatted = $"{(int)ts.TotalHours}:{ts.Minutes:D2}:{ts.Seconds:D2}"; // 输出结果:"220:00:00"
方法二:处理含小数的总小时场景(可选)
如果TimeSpan包含非整数小时的情况(比如9天4小时30分钟15秒),上述代码依然有效,Minutes和Seconds会直接取当前的分钟和秒数:
TimeSpan ts = new TimeSpan(9, 4, 30, 15); string formatted = $"{(int)ts.TotalHours}:{ts.Minutes:D2}:{ts.Seconds:D2}"; // 输出结果:"220:30:15"
注意事项
- 不要使用
ToString("HH:mm:ss"),因为HH仅表示TimeSpan中当天的小时数(范围0-23),会输出04:00:00而非总小时数。 - 使用
D2格式说明符可以确保分钟和秒始终以两位数字显示(比如1分钟会显示为01)。
内容的提问来源于stack exchange,提问作者Tom el Safadi
相关产品推荐
相关产品推荐

