如何用TimeSpan或其他方法将分钟转换为总小时:分钟格式?
解决分钟转“总小时:分钟”格式的问题
你之前用TimeSpan.ToString(@"hh\:mm")得到错误结果,是因为hh格式符只会提取当天内的小时(范围00-23),当总分钟数超过24小时(1440分钟),TimeSpan会把多余的时长转成天数,hh只取当天的小时部分,所以1515分钟(25小时15分)会被解析成1天1小时15分,最终输出01:15。
两种可行的解决方法
方法一:基于TimeSpan计算总小时和剩余分钟
通过TimeSpan的TotalHours获取总小时数(带小数),取整数部分作为总小时,再结合Minutes获取剩余分钟(即总分钟模60的结果):
int minutes = 1515; TimeSpan timeSpan = TimeSpan.FromMinutes(minutes); string time = $"{(int)timeSpan.TotalHours}:{timeSpan.Minutes:D2}"; // 输出:25:15
其中D2用于确保分钟始终显示两位数字,比如5分钟会输出05。
方法二:直接算术计算(无需TimeSpan)
直接通过整数除法和取模运算计算总小时和剩余分钟,逻辑更直观:
int minutes = 1515; int totalHours = minutes / 60; int remainingMinutes = minutes % 60; string time = $"{totalHours}:{remainingMinutes:D2}"; // 输出:25:15
补充说明
TimeSpan的内置格式符里没有直接输出总小时的选项,hh/HH都只能表示当天内的小时,所以无法通过单一的ToString格式字符串实现需求,必须手动拼接总小时和分钟的结果。
内容的提问来源于stack exchange,提问作者Diomedes
相关产品推荐
相关产品推荐

