仅比较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日以来的天数。但这意味着重新实现一堆复杂的逻辑,例如不同的月份长度,加/减和leap年。

创建一个新类也避免了我担心的极端情况,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;

}

}

以上是 仅比较Dart中的DateTimes日期 的全部内容, 来源链接: utcz.com/qa/400333.html

回到顶部