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

Flutter中如何将接口返回的时分字符串与当前时间时分做对比

Flutter 时分时间对比实现方案

核心思路是忽略日期维度,仅对比时分换算后的总分钟数值,逻辑简单不易出错,提供两种实现方案可选:


方案1:无第三方依赖实现

无需引入额外包,直接拆分字符串计算对比即可:

/// 检查接口返回的HH:mm时间是否早于当前时分
/// 返回true表示接口时间更早,可触发对应操作
bool isApiTimeEarlier(String apiTimeStr) {
  // 解析接口返回的时分
  List<String> timeParts = apiTimeStr.split(':');
  int apiHour = int.parse(timeParts[0]);
  int apiMinute = int.parse(timeParts[1]);
  int apiTotal = apiHour * 60 + apiMinute;

  // 计算当前时间的时分总分钟数
  DateTime now = DateTime.now();
  int nowTotal = now.hour * 60 + now.minute;

  return apiTotal < nowTotal;
}

方案2:用intl包标准化解析

如果项目已经引入intl做时间处理,可以用格式化工具统一解析:

  1. 先在pubspec.yaml添加依赖:
dependencies:
  flutter:
    sdk: flutter
  intl: ^0.18.1 # 可替换为最新稳定版

执行flutter pub get安装后编写逻辑:

import 'package:intl/intl.dart';

bool isApiTimeEarlier(String apiTimeStr) {
  DateFormat format = DateFormat("HH:mm");
  // 接口时间和当前时分都会被解析为1970-01-01的同日期时间,直接对比即可
  DateTime apiTime = format.parse(apiTimeStr);
  DateTime currentTime = format.parse(format.format(DateTime.now()));
  return apiTime.isBefore(currentTime);
}

使用示例

void triggerActionIfNeed() {
  String apiTime = "09:30";
  if (isApiTimeEarlier(apiTime)) {
    // 执行你需要的指定操作
  }
}

注意事项

  • 可根据业务需要添加try-catch捕获时间格式异常
  • 两种方案均自动忽略日期部分,仅对比时分维度,完全匹配需求

内容的提问来源于stack exchange,提问作者ze kotch

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 01:45:04