Dart/Flutter:日期范围内的天数列表

Ale*_*ero 3 dart flutter

我需要从日期范围中检索天数列表。用户选择开始日期和结束日期,并计算两者之间的天数(包括开始和结束)。

我尝试使用 for 循环如下:

List<DateTime> calculateDaysInterval(DateTime startDate, DateTime endDate) {
    List<DateTime> days = [];
    for (DateTime d = startDate;
        d.isBefore(endDate);
        d.add(Duration(days: 1))) {
      days.add(d);
    }
    return days;
  }
Run Code Online (Sandbox Code Playgroud)

但它不起作用并且它冻结了应用程序。大家有什么建议吗?提前致谢。

Ale*_*ero 5

我可能已经找到了解决方案。它看起来不是很好,但它完成了工作。

List<DateTime> calculateDaysInterval(DateTime startDate, DateTime endDate) {
    List<DateTime> days = [];
    for (int i = 0; i <= endDate.difference(startDate).inDays; i++) {
      days.add(startDate.add(Duration(days: i)));
    }
    return days;
  }

Run Code Online (Sandbox Code Playgroud)

如果你们有更好的方法,请告诉我。


小智 5

怎么样:

final daysToGenerate = end.difference(start).inDays;
days = List.generate(daysToGenerate, (i) => DateTime(start.year, start.month, start.day + (i)));
Run Code Online (Sandbox Code Playgroud)

  • 我喜欢这种方法,但会使用 DateTime 添加函数,而不是直接添加到日期,以避免月/年之间的问题 `List&lt;DateTime&gt; days = List.generate(daysToGenerate, (i) =&gt; start.add(Duration(days) :我)))` (4认同)