C# 实现带Hr标识的时分格式时间转整数分钟值并完成时长求和计算
实现方案
完全可以基于你现有代码结构完成计算,核心逻辑是先把HH:mm Hr格式的时长拆解换算为分钟整数,再做整数累加即可。
具体实现步骤
- 调整现有变量定义:你之前代码里的
time_1/time_2/time_3需要调整为字符串类型,用来存储带Hr标识的原始时长值。 - 写一个通用的时长换算辅助方法,避免重复写拆分逻辑,代码逻辑直白好懂:
// 输入"01:30 Hr"这类格式的字符串,输出对应的总分钟数 int RawTimeToMinutes(string rawTimeStr) { // 去掉字符串末尾的" Hr"标记,只保留前面的时分部分 string pureTime = rawTimeStr.Replace(" Hr", ""); // 按冒号拆分出小时、分钟的文本片段 string[] splitResult = pureTime.Split(':'); // 把文本转成整数做计算 int hourPart = int.Parse(splitResult[0]); int minutePart = int.Parse(splitResult[1]); // 换算成总分钟数返回 return hourPart * 60 + minutePart; } - 在原有
Start方法里调用换算方法,把转换后的整数做累加,完整的可运行代码结构如下:public int total_time; // 存储原始时长的字符串变量,直接填入你实际的时长值即可 public string time_1 = "01:30 Hr"; public string time_2 = "09:45 Hr"; public string time_3 = "13:27 Hr"; void Start() { total_time = RawTimeToMinutes(time_1) + RawTimeToMinutes(time_2) + RawTimeToMinutes(time_3); }
新手调整提示
- 如果你的实际数据里
Hr前面没有空格(比如格式是13:27Hr),只需要把辅助方法里的Replace(" Hr", "");改成Replace("Hr", "");即可,避免把前面的数字误删除。 - 如果拆分用的冒号是中文全角格式,把
Split(':')里的英文冒号换成对应的全角冒号:即可适配。 - 按照上面的代码计算你给的三个样例值,最终得到的
total_time结果是1482分钟;如果你之前举例的求和结果对应13:45的数值,只需要把time_3的原始值改成对应格式即可。 - 除了手动拆分的方式,.NET自带的
TimeSpan结构也可以直接解析标准的时分格式,比如TimeSpan.Parse("01:30").TotalMinutes可以直接得到对应的分钟数,但手动拆分的逻辑更直观,适合新手理解完整的转换过程,遇到格式小偏差的时候也更容易调整修复。 - 如果你后续要统计更多时长,不需要反复拼接加号,可以把所有原始时长字符串放到一个列表里,循环遍历做换算累加,代码会更简洁。
内容的提问来源于stack exchange,提问作者Richard
相关产品推荐
相关产品推荐

