如何在Dart或Flutter编程中只比较DateTimes的日期| Dart的例子

448 阅读2分钟

在Dart中,DateTime对象存储日期和时间数据。

假设你想比较两个DateTime对象的日期,两个日期的月、日和年是相等的。

如何在Dart中只比较DateTimes的日期?

创建三个日期时间对象:

  • 第一个对象date1 是使用now() -2022-04-10 20:48:56.354
  • 第二个对象date2 ,增加了10秒的持续时间。2022-04-10 20:49:06.354
  • 第三个对象date3 ,通过添加10天的持续时间创建。2022-04-20 20:48:56.354
  • date1 和 是相等的,而 ,和 或 和 是不相等的。date2 date1 date3 date2 date3

我们有多种方法可以只检查DateTime对象的日期:

  • 使用扩展方法比较年、月、日

在这个例子中,创建了一个扩展方法,如果两个对象相等则返回真。

下面是一个示例程序

void main() {
  DateTime date1 = DateTime.now();
  print(date1); //2022-04-10 20:48:56.354


  var date2 = date1.add(Duration(seconds: 10));
  print(date2); //2022-04-10 20:49:06.354

  var date3 = date1.add(Duration(days: 10));
  print(date3); //2022-04-20 20:48:56.354


  print(date1.isDateEqual(date2)); // true
  print(date1.isDateEqual(date3)); // false

  print(date1.isDateEqual(date3)); // false
}

extension CompareDates on DateTime {
  bool isDateEqual(DateTime date2) {
    return year == date2.year && month == date2.month && day == date2.day;
  }
}


输出

2022-04-10 20:48:56.354
2022-04-10 20:49:06.354
2022-04-20 20:48:56.354
true
false
false
  • 使用差值和inDays方法

这个例子找到两个日期对象之间的差异

Duration difference(DateTime other)

它返回Duration对象,调用inDays ,返回一个天数,检查天数是否为零。

下面是一个示例程序。

void main() {
  DateTime date1 = DateTime.now();
  print(date1); //2022-04-10 20:48:56.354

  var date2 = date1.add(Duration(seconds: 10));
  print(date2); //2022-04-10 20:49:06.354

  var date3 = date1.add(Duration(days: 10));
  print(date3); //2022-04-20 20:48:56.354

  print(date1.difference(date2).inDays == 0); // true
  print(date1.difference(date3).inDays == 0); // false

  print(date2.difference(date3).inDays == 0); // false
}

输出

2022-04-10 20:48:56.354
2022-04-10 20:49:06.354
2022-04-20 20:48:56.354
true
false
false

结论

在本教程中,有几种方法可以通过忽略时间字段来查找和比较两个日期是否相等。