我的代码是:
for (var rt in list) {
if (rt.date.day == date2.day &&
rt.date.month == date2.month &&
rt.date.year == date2.year) {
...
}
}
有没有更好的方法来比较一个日期和另一个日期?
您可以制作一个助手函数来剥离时间:
DateTime dateOnly(DateTime dateTime) => DateTime(dateTime.year, dateTime.month, dateTime.day);
然后可以使用DateTime
的普通operator ==
:
if (dateOnly(rt.date) == dateOnly(date2)) {
...
}
请注意,上面的示例假设两个日期位于同一时区。如果它们可能在不同的时区,您应该精确定义两个DateTime
具有相同"日期"的含义,并将两者转换为一个公共时区(可能是UTC(。
使用difference
:
for (var rt in list) {
if (rt.date.difference(date2).inDays == 0) {
...
}
}
文档链接:https://api.flutter.dev/flutter/dart-core/DateTime/difference.html
您可以检查两个日期(我认为是date.difference(otherDate)
(之间的差异,并检查这两个日期之间的差异是否很小,在您的上下文中,这可能会使它们"相等">
但是,事实证明,日期比较可能有点麻烦!:(