You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 02:09:03