Flutter 如何对比两个时长字符串 验证String2是否不大于String1
解决方案
核心思路
将两个格式固定的时长字符串统一转换为总分钟数的整数形式,直接比较整数大小即可完成判断,不需要手动处理时分借位逻辑,实现简单且不易出错。
实现步骤
- 第一步:解析时长字符串,分别提取两个字符串中的小时、分钟数值
按空格拆分字符串后,索引0位置为小时值,索引2位置为分钟值,转为整数即可。如果你的时长字符串存在单复数变体(比如HOUR写成HOURS、MIN写成MINS),使用正则表达式提取数字兼容性更好。 - 第二步:计算每个时长对应的总分钟数
转换公式:总分钟数 = 小时数 * 60 + 分钟数
以你给出的示例计算:
String1总分钟数 = 2 * 60 + 0 = 120
String2总分钟数 = 1 * 60 + 30 = 90 - 第三步:比较两个总分钟数
只要满足String2的总分钟数 ≤ String1的总分钟数,二者相减结果就不会为负数。
代码示例
Java 实现
public class TimeDurationCompare { // 工具方法:将时长字符串转换为总分钟数 private static int toTotalMinutes(String timeStr) { String[] parts = timeStr.trim().split("\\s+"); int hour = Integer.parseInt(parts[0]); int minute = Integer.parseInt(parts[2]); return hour * 60 + minute; } public static void main(String[] args) { String string1 = "2 HOUR 0 MIN"; String string2 = "1 HOUR 30 MIN"; int totalMin1 = toTotalMinutes(string1); int totalMin2 = toTotalMinutes(string2); boolean resultIsNonNegative = totalMin2 <= totalMin1; System.out.println(resultIsNonNegative); // 输出 true } }
Python 实现
def to_total_minutes(time_str: str) -> int: parts = time_str.strip().split() hour = int(parts[0]) minute = int(parts[2]) return hour * 60 + minute if __name__ == "__main__": string1 = "2 HOUR 0 MIN" string2 = "1 HOUR 30 MIN" total_min1 = to_total_minutes(string1) total_min2 = to_total_minutes(string2) result_is_non_negative = total_min2 <= total_min1 print(result_is_non_negative) # 输出 True
内容的提问来源于stack exchange,提问作者rameez khan
相关产品推荐
相关产品推荐

