我需要在我的应用中存储和比较日期(无时间),而无需关心时区。 我可以看到三种解决方案:
(date1.year == date2.year && date1.month == date2.month && date1.day == date2.day) 这就是我现在正在做的事情,但是太冗长了。
(date1.year == date2.year && date1.month == date2.month && date1.day == date2.day)
date1.format("YYYYMMDD") == date2.format("YYYYMMDD") 这仍然很冗长(尽管还不算太糟),但对我来说似乎效率不高…
date1.format("YYYYMMDD") == date2.format("YYYYMMDD")
自己创建一个新的Date类,也许将日期存储为“ YYYYMMDD”字符串,或者存储自1980年1月1日以来的天数。但这意味着重新实现一堆复杂的逻辑,例如不同的月份长度,加/减和leap年。
创建一个新类也避免了我担心的极端情况,Duration(days: 1)由于夏令时的更改,添加结果的日期相同。但是我可能没有想到这种方法的一些极端情况…
Duration(days: 1)
这些解决方案中哪一个最好,或者是我没有想到的更好的解决方案?
自从我问这个问题以来,扩展方法已经在Dart中发布了。我现在将实现选项1作为扩展方法:
extension DateOnlyCompare on DateTime { bool isSameDate(DateTime other) { return this.year == other.year && this.month == other.month && this.day == other.day; } }