在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和 是相等的,而 ,和 或 和 是不相等的。date2date1date3date2date3
我们有多种方法可以只检查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
结论
在本教程中,有几种方法可以通过忽略时间字段来查找和比较两个日期是否相等。