Flutter 有没有更好的方法来比较一个日期和另一个日期?
我的代码是:Flutter 有没有更好的方法来比较一个日期和另一个日期?,flutter,dart,Flutter,Dart,我的代码是: for (var rt in list) { if (rt.date.day == date2.day && rt.date.month == date2.month && rt.date.year == date2.year) { ... } } 有没有更好的方法来比较一个日期和另一个日期?使用差异: for (var rt in list) { if (rt.date
for (var rt in list) {
if (rt.date.day == date2.day &&
rt.date.month == date2.month &&
rt.date.year == date2.year) {
...
}
}
有没有更好的方法来比较一个日期和另一个日期?使用
差异
:
for (var rt in list) {
if (rt.date.difference(date2).inDays == 0) {
...
}
}
文档链接:
使用
差异:
for (var rt in list) {
if (rt.date.difference(date2).inDays == 0) {
...
}
}
文档链接:
您可以创建一个助手函数来去除时间:
DateTime dateOnly(DateTime DateTime)=>DateTime(DateTime.year、DateTime.month、DateTime.day);
然后您可以使用DateTime
的正常值:
if(dateOnly(rt.date)=dateOnly(date2)){
...
}
请注意,上面的示例假设两个日期位于同一时区。如果它们可能位于不同的时区,您应该精确定义两个DateTime
s具有相同“日期”的含义,并将两者转换为一个公共时区(可能是UTC)。您可以创建一个助手函数来去除时间:
DateTime dateOnly(DateTime DateTime)=>DateTime(DateTime.year、DateTime.month、DateTime.day);
然后您可以使用DateTime
的正常值:
if(dateOnly(rt.date)=dateOnly(date2)){
...
}
请注意,上面的示例假设两个日期位于同一时区。如果它们可能位于不同的时区,您应该精确定义两个DateTime
s具有相同“日期”的含义,并将两者转换为一个公共时区(可能是UTC)。您可以检查两个日期之间的差异(date.difference(otherDate)
,我认为)并检查两者之间的差异是否很小,在你的上下文中,这可能会使它们“相等”
但是,事实证明,日期比较可能有点麻烦!:) 您可以检查这两个日期之间的差异(date.difference(otherDate)
,我认为),并检查这两个日期之间的差异是否很小,这在您的上下文中可能会使它们“相等”
但是,事实证明,日期比较可能有点麻烦!:) 它不起作用。我认为这是因为日期值是以不同的方式获取的,所以我使用的代码比上面的更复杂。但通过打印,我得到了这样的结果:日期1:2020-05-01 21:05:02.543195日期2:2020-05-01 21:33:13.633851它们是相同的日期,但不是相同的时间。@JoanFarfánArmas噢,我不知道你不在乎时间。在这种情况下,你可以编写并比较结果。谢谢@jamesdlin,它工作得很好,在我的应用程序中有一个功能很好。它没有工作。我认为这是因为日期值是以不同的方式获取的,所以我使用的代码比上面的更复杂。但通过打印,我得到了这样的结果:日期1:2020-05-01 21:05:02.543195日期2:2020-05-01 21:33:13.633851它们是相同的日期,但不是相同的时间。@JoanFarfánArmas噢,我不知道你不在乎时间。在这种情况下,你可以编写并比较结果。谢谢@jamesdlin,它工作得很好,在我的应用程序中有一个功能很好。出于某种原因,使用它,当我将“日期”与一周中的每个日期进行比较时(因为上面所有的代码都在过去7天的循环中,date2得到了每个日期),它与今天和昨天相匹配。。。然而,通过使用我编写的代码,它只与今天匹配。我认为这种方式不准确……这很奇怪。在回答之前,我已经在dartpad中测试了代码,它工作得非常好。你到底想比较什么?请注意,这将把2019-12-31的23:30和2020-01-01的00:30视为“同一天”,这可能是理想的,也可能不是理想的。如果涉及夏令时,它也可能会将一天25小时内的两次视为不同。出于某种原因,当我使用它时,当我将“日期”与一周中的每个日期进行比较时(因为上面所有代码都在过去7天的循环中,date2会得到每个日期),它与今天和昨天相匹配。。。然而,通过使用我编写的代码,它只与今天匹配。我认为这种方式不准确……这很奇怪。在回答之前,我已经在dartpad中测试了代码,它工作得非常好。你到底想比较什么?请注意,这将把2019-12-31的23:30和2020-01-01的00:30视为“同一天”,这可能是理想的,也可能不是理想的。如果涉及日光节约,它也可能会将一天25小时内的两次视为不同。是的,与@Faaatman提到的相同,但它不起作用。我在他的博客上留言了。是的,和@Faaatman提到的一样,但没用。我在他的博客上留下了评论。