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做时间处理,可以用格式化工具统一解析:
- 先在
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
相关产品推荐
相关产品推荐

