如何将年、月、日、小时、分钟或秒添加/减少到DateTime Dart或Flutter中?

672 阅读3分钟

在本教程中,你会发现有多种方法可以加减年、月、日、小时、分钟或秒。

如何在Dart中为日期添加年月日、小时分或秒的毫秒和微秒

  • 首先为当前日期和时间创建一个Date对象
  • Date类包含接受Duration对象的方法
DateTime add(Duration duration)

持续时间可以用天、小时、分钟、秒、毫秒和微秒来传递。

下面是一个将持续时间添加到日期中的程序

void main() {
  DateTime now = DateTime.now(); // March 2022

  var date = new DateTime(now.year, now.month + 1, 0);

  print(date); //2022-04-30 00:00:00.000

  //add one Year
  date = date.add(Duration(days: 365));
  print(date); //2023-04-30 00:00:00.000

  //add one Month
  date = date.add(Duration(days: 30));
  print(date); // 2023-05-30 00:00:00.000

  //add one day
  date = date.add(Duration(days: 1));
  print(date); // 2023-05-31 00:00:00.000

  //add one hour
  date = date.add(Duration(hours: 1));
  print(date); // 2023-05-31 01:00:00.000

  //add 30 minutes
  date = date.add(Duration(minutes: 30));
  print(date); //2023-05-31 01:30:00.000

  //add 30 seconds
  date = date.add(Duration(seconds: 30));
  print(date); //2023-05-31 01:30:30.000
  //add 40 milliseconds
  date = date.add(Duration(milliseconds: 40));
  print(date); //2023-05-31 01:30:30.040

  //add 1000 microseconds
  date = date.add(Duration(microseconds: 1000));
  print(date); //2023-05-31 01:30:30.041
}

输出

2022-04-30 00:00:00.000
2023-04-30 00:00:00.000
2023-05-30 00:00:00.000
2023-05-31 00:00:00.000
2023-05-31 01:00:00.000
2023-05-31 01:30:00.000
2023-05-31 01:30:30.000
2023-05-31 01:30:30.040
2023-05-31 01:30:30.041

如何在Dart中为日期减去年月日,小时分钟或秒,毫秒和微秒

  • 首先为当前日期和时间创建一个Date对象
  • Date类包含接受Duration对象的减法方法
DateTime subtract(Duration duration)

持续时间可以用天、小时、分钟、秒、毫秒和微秒来传递。 下面是一个将持续时间减去日期的程序

void main() {
  DateTime now = DateTime.now();

  var date = new DateTime(now.year, now.month + 1, 0);

  print(date); //2022-04-30 00:00:00.000

  //subtract one Year
  date = date.subtract(Duration(days: 365));
  print(date); //2021-04-30 00:00:00.000

  //subtract one Month
  date = date.subtract(Duration(days: 30));
  print(date); // 2021-03-31 00:00:00.000

  //subtract one day
  date = date.subtract(Duration(days: 1));
  print(date); // 2021-03-30 00:00:00.000


  //subtract one hour
  date = date.subtract(Duration(hours: 1));
  print(date); // 2021-03-29 23:00:00.000

  //add 30 minutes
  date = date.subtract(Duration(minutes: 30));
  print(date); //2021-03-29 22:30:00.000

  //subtract 30 seconds
  date = date.subtract(Duration(seconds: 30));
  print(date); //2021-03-29 22:29:30.000
  
  //subtract 40 milliseconds
  date = date.subtract(Duration(milliseconds: 40));
  print(date); //2021-03-29 22:29:29.960

  //subtract 1000 microseconds
  date = date.subtract(Duration(microseconds: 1000));
  print(date); //2021-03-29 22:29:29.959
}

输出

2022-04-30 00:00:00.000
2021-04-30 00:00:00.000
2021-03-31 00:00:00.000
2021-03-30 00:00:00.000
2021-03-29 23:00:00.000
2021-03-29 22:30:00.000
2021-03-29 22:29:30.000
2021-03-29 22:29:29.960
2021-03-29 22:29:29.959