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

如何在Dart中从当前日期时间减去1天(24小时)?

Dart中实现当前日期时间减去1天/24小时的方法

你当前的代码是直接将DateTime.now()格式化为字符串,但日期运算需要对DateTime对象操作,而非字符串。正确实现步骤如下:

  • 先获取当前的DateTime实例,不要立刻格式化
  • 使用subtract()方法传入Duration参数完成日期减法
  • 最后将处理后的DateTime对象格式化为目标字符串格式

完整代码示例

import 'package:intl/intl.dart';

void main() {
  // 获取当前DateTime对象
  DateTime now = DateTime.now();
  
  // 方式1:减去1天
  DateTime oneDayAgo = now.subtract(const Duration(days: 1));
  // 方式2:减去24小时(常规场景下和方式1效果一致)
  DateTime twentyFourHoursAgo = now.subtract(const Duration(hours: 24));
  
  // 格式化为指定的字符串格式
  String cdateMinusOneDay = DateFormat("yyyy-MM-dd HH:mm:ss").format(oneDayAgo);
  String cdateMinus24h = DateFormat("yyyy-MM-dd HH:mm:ss").format(twentyFourHoursAgo);
  
  print("当前日期减1天:$cdateMinusOneDay");
  print("当前日期减24小时:$cdateMinus24h");
}

注意事项

  • Duration(days:1)和Duration(hours:24)在多数场景下效果相同,但遇到夏令时切换等特殊时间点时可能存在细微差异,可根据业务需求选择。
  • 避免直接对格式化后的字符串做日期运算,这种方式易出错且维护性差。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 04:30:56