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

调用Dart的DateTime.add()方法添加时长后时间值无变化是什么原因?

问题根因

Dart 中的 DateTime 属于不可变类型,add() 方法不会修改原有的 DateTime 实例,而是返回一个添加了指定时长的全新 DateTime 对象。你的代码仅调用了 time.add() 但没有接收该方法的返回值,原有 time 变量存储的始终是初始时间,打印结果自然不会有变化。

修正方案

将 add() 方法的返回值重新赋值给 time 变量即可实现预期效果:

Timestamp timestamp = document.get("timestamp");
DateTime time = timestamp.toDate();
time = time.add(const Duration(hours: 3));
print(time);

注意事项

  • DateTime 的 subtract() 等修改类方法均遵循相同设计,所有修改操作都需要接收返回值才能拿到更新后的时间
  • 对时间精度要求高的场景下,注意add方法默认是按本地时区计算的,如有UTC时间需求需要先调用toUtc()再做计算

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 06:15:10