date - 在 Dart 中仅比较 DateTimes 的日期

我需要在我的应用中存储和比较日期(不包括时间),而不关心时区。
我可以看到三个解决方案:

  1. (date1.year == date2.year && date1.month == date2.month && date1.day == date2.day)
    这就是我现在正在做的事情,但是太冗长了。

  2. date1.format("YYYYMMDD") == date2.format("YYYYMMDD")
    这仍然相当冗长(虽然没有那么糟糕),但对我来说似乎效率低下......

  3. 自己创建一个新的 Date 类,可能将日期存储为“YYYYMMDD”字符串,或自 1980 年 1 月 1 日以来的天数。但这意味着重新实现一大堆复杂的逻辑,比如不同的月份长度,加/减和闰年。

创建一个新类还可以避免我担心的极端情况,即添加 Duration(days: 1) 由于夏令时更改而最终以相同的日期结束。但是我没有想到这种方法可能存在边缘情况......

这些解决方案中哪一个是最好的,或者有没有我没想到的更好的解决方案?

最佳答案

既然我问了这个,extension methods已在 Dart 中发布。我现在将选项 1 实现为扩展方法:

extension DateOnlyCompare on DateTime {
  bool isSameDate(DateTime other) {
    return year == other.year && month == other.month
           && day == other.day;
  }
}

https://stackoverflow.com/questions/52978195/

相关文章:

flutter - Flutter 中 RecyclerView 的替代方案是什么?

mobile - Flutter - 另一个小部件下方的位置 ListView

listview - Flutter:防止边缘削波

dart - Flutter AbsorbPointer 与 IgnorePointer 的区别

dart - 如何从 Flutter 中的字符串中删除/检测整个表情符号?

android-studio - adb.exe 已停止使用 Android Studio 4.3.

dart - Flutter 从不同的 dart 文件访问父 Scaffold

dart - 如何在 Flutter 中测试/调试摇树?

dart - 在 flutter 中使用 import 'dart:html' - 我需要额外的依赖

android - 为了解决 'google-services.json is missing',我