如何将TimeSpan转换为含总分钟数、秒数和毫秒数的格式?
解决TimeSpan显示总分钟数(含小时转换)、秒数和毫秒数的问题
你遇到的问题根源在于TimeSpan的mm格式符仅提取不足1小时的剩余分钟数,而非将小时转换为分钟后的总分钟数。要实现需求,需手动计算总分钟数,再拼接秒和毫秒部分:
修正后的代码
var d1 = new DateTime(2020, 12, 1, 12, 00, 00); var d2 = new DateTime(2020, 12, 1, 10, 12, 30); var timeSpan = d1 - d2; // 计算总分钟数:将小时转换为分钟后加上原有分钟数 int totalMinutes = timeSpan.Hours * 60 + timeSpan.Minutes; // 拼接秒数和毫秒数,利用ToString获取标准格式的秒、毫秒部分 Console.WriteLine($"{totalMinutes}:{timeSpan.ToString(@"ss\:fff")}");
代码说明
- 原代码中的
mm对应TimeSpan的Minutes属性,只会返回0-59的数值(即当前小时内的剩余分钟),所以1小时47分的场景下仅显示47,忽略了小时部分。 - 通过
timeSpan.Hours * 60 + timeSpan.Minutes可得到完整总分钟数(1*60+47=107),搭配ss\:fff格式获取秒和毫秒后,最终输出107:30:000,完全符合需求。
如果需要将秒数也转换为分钟小数(比如把30秒显示为0.5分钟),可以使用timeSpan.TotalMinutes,但多数场景下保留「整数分钟+单独秒数/毫秒数」的格式更直观。
内容的提问来源于stack exchange,提问作者user20510170
相关产品推荐
相关产品推荐

