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
相关产品推荐
相关产品推荐

