Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 有没有更好的方法来比较一个日期和另一个日期?_Flutter_Dart - Fatal编程技术网

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提到的一样,但没用。我在他的博客上留下了评论。