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

Flutter中如何计算时间差?解决结果为1970的异常问题

问题分析

你的代码错误在于混淆了时间点和时间段的概念:timenowSeconds是从1970年到当前时间的总秒数,你把它当作Duration的参数,相当于用未来时间减去一个长达几十年的时间段,结果自然会得到接近1970年的异常日期。

正确解法

Dart的DateTime类型支持直接相减运算,返回的Duration对象就是两个时间的差值,无需手动转换毫秒/秒。

修正后的代码

// 获取当前时间
DateTime timeNow = DateTime.now();
// 保留你原有构造未来时间的逻辑
DateTime tempDate = DateFormat("yyyy-MM-dd hh:mm").parse(
    "${timeNow.year}-${timeNow.month}-${timeNow.day} ${nexTime as String}");
// 直接计算未来时间与当前时间的差值
Duration timeDifference = tempDate.difference(timeNow);

// 按需获取差值的具体单位示例
print("剩余天数:${timeDifference.inDays}");
print("剩余小时:${timeDifference.inHours}");
print("剩余分钟:${timeDifference.inMinutes}");

关键说明

  • DateTime.difference()方法返回的Duration就是你需要的时间间隔,而非一个新的DateTime对象。
  • 如果你需要将差值转换为其他格式(比如总秒数),可以通过timeDifference.inSeconds这类属性直接获取。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 14:05:21