如何在ASP.NET Web应用中计算两个时长的加减运算?
ASP.NET中实现小时:分钟格式时长的加减运算
核心思路
把时长字符串转换为总分钟数进行数值运算,再将运算结果转换回小时:分钟格式,直接规避时分进位/借位的复杂逻辑,简化计算流程。
实现代码
1. 辅助方法:时长与总分钟数互转
public static class DurationCalculator { // 将"小时:分钟"格式字符串转为总分钟数 public static int ParseDurationToMinutes(string duration) { var parts = duration.Split(':'); if (parts.Length != 2 || !int.TryParse(parts[0], out int hours) || !int.TryParse(parts[1], out int minutes)) { throw new ArgumentException("无效时长格式,请使用\"小时:分钟\"格式,例如100:45"); } return hours * 60 + minutes; } // 将总分钟数转回"小时:分钟"格式(分钟补两位) public static string ConvertMinutesToDuration(int totalMinutes) { int absMinutes = Math.Abs(totalMinutes); int hours = absMinutes / 60; int minutes = absMinutes % 60; return $"{hours}:{minutes:D2}"; } }
2. 加减运算逻辑
// 示例输入 string durationA = "100:45"; string durationB = "395:50"; // 转换为总分钟数 int minsA = DurationCalculator.ParseDurationToMinutes(durationA); int minsB = DurationCalculator.ParseDurationToMinutes(durationB); // 加法运算 int addTotal = minsA + minsB; string addResult = DurationCalculator.ConvertMinutesToDuration(addTotal); // 结果:496:35 // 减法运算(按示例取差值绝对值) int subtractTotal = minsA - minsB; string subtractResult = DurationCalculator.ConvertMinutesToDuration(subtractTotal); // 结果:295:05
代码说明
- ParseDurationToMinutes:拆分时长字符串并验证格式,格式不符合要求时抛出异常,可根据业务场景调整异常处理逻辑。
- ConvertMinutesToDuration:通过取整和取余计算小时与分钟,用
D2保证分钟始终为两位数字,Math.Abs处理负数,匹配示例中减法结果为正数的需求。 - 运算逻辑:加法直接求和,减法取差值绝对值,完全匹配你给出的示例结果。
内容的提问来源于stack exchange,提问作者RUB JAN
相关产品推荐
相关产品推荐

