我需要在我的应用程序中存储和比较日期(没有时间),而不关心时区。
我可以看到三种解决方案:
(date1.year == date2.year && date1.month == date2.month && date1.day == date2.day)
这就是我现在正在做的,但它非常冗长。date1.format("YYYYMMDD") == date2.format("YYYYMMDD")
这仍然是相当冗长的(虽然不是那么糟糕),但似乎只是效率低下我...
1.我自己创建一个新的Date类,也许将日期存储为“YYYYMMDD”字符串,或者自1980年1月1日以来的天数。但这意味着重新实现一大堆复杂的逻辑,比如不同的月长,加/减和闰年。
创建一个新的类也避免了我担心的边缘情况,即添加Duration(days: 1)
由于夏令时的变化而导致相同的日期。
哪一个是最好的解决方案,或者有一个更好的解决方案,我还没有想到?
7条答案
按热度按时间6ie5vjzr1#
既然我问了这个问题,extension methods已经在Dart中发布了。我现在将选项1实现为扩展方法:
x4shl7ld2#
可以使用compareTo:
oewdyzsn3#
最简单的选择是使用
DateUtils
举个例子
isSameDay
接受2个DateTime
对象并忽略time元素mefy6pfw4#
由于DateTime的difference()方法返回的结果为Duration()对象,因此我们只需使用inDays属性将Duration转换为天数,即可简单地比较天数
ippsafx75#
我用这个函数来计算天数的差异。
比较日期很棘手,因为结果不仅取决于时间戳,还取决于用户的时区。
8yparm6h6#
使用以下包:dart_date DartTime的 dart 扩展
dart_date提供了最全面、最简单、最一致的工具集,用于操作Dart日期。
dart_date
这里也有天的差异:
gg0vcinb7#
使用
isAtSameMomentAs
: