我需要在我的应用中存储和比较日期(不包括时间),而不关心时区。
我可以看到三个解决方案:
(date1.year == date2.year && date1.month == date2.month && date1.day == date2.day)
这就是我现在正在做的事情,但是太冗长了。
date1.format("YYYYMMDD") == date2.format("YYYYMMDD")
这仍然相当冗长(虽然没有那么糟糕),但对我来说似乎效率低下......
自己创建一个新的 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
dart - Flutter AbsorbPointer 与 IgnorePointer 的区别
dart - 如何从 Flutter 中的字符串中删除/检测整个表情符号?
android-studio - adb.exe 已停止使用 Android Studio 4.3.
dart - Flutter 从不同的 dart 文件访问父 Scaffold