求助:如何将分钟转换为总小时数?TimeSpan显示异常问题
解决C#中分钟转总小时数(含剩余分钟)的问题
嘿,这个问题我之前踩过坑!你遇到的核心问题是TimeSpan的格式字符串hh(或HH)只显示单日范围内的小时数,超过24小时的部分会被自动拆分为天数,所以2000分钟(33小时20分)会被拆成1天+9小时,最终hh\:mm输出09:20。
要实现显示总小时数的需求,有两种简单的方案:
方案一:手动计算总小时和剩余分钟
直接通过数学运算得到总小时数和剩余分钟,完全避开TimeSpan的天数拆分限制:
double minutes = 2000; int totalHours = (int)(minutes / 60); int remainingMinutes = (int)(minutes % 60); // 用D2确保分钟数始终是两位(比如5分钟显示为05) label1.Text = $"{totalHours}:{remainingMinutes:D2}";
这个方法逻辑直白,输出就是你想要的33:20。
方案二:基于TimeSpan转换总小时数
如果你还是想保留TimeSpan的使用,可以把TimeSpan中的天数转换为小时数,再加上当前的小时数:
double minutes = 2000; TimeSpan timeSpan = TimeSpan.FromMinutes(minutes); int totalHours = timeSpan.Days * 24 + timeSpan.Hours; label1.Text = $"{totalHours}:{timeSpan.Minutes:D2}";
这里timeSpan.Days是完整的天数(2000分钟对应1天),乘以24后加上剩余的9小时,就能得到总33小时,再拼接分钟数即可。
补充说明
TimeSpan的格式符里:
hh:12小时制的单日小时(范围00-11)HH:24小时制的单日小时(范围00-23)
这两个都不会显示超过24的总小时数,所以必须手动计算总小时才能得到你要的结果。
内容的提问来源于stack exchange,提问作者D.Iple
相关产品推荐
相关产品推荐

