我需要从日期范围中检索日期列表。用户选择开始日期和结束日期,并计算两者之间的天数(包括开始和结束)。
我尝试使用一个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;
}
但它不工作,它冻结了应用程序。你们有什么建议吗?先谢了。
5条答案
按热度按时间ui7jx7zq1#
怎么样:
bjp0bcyl2#
我可能找到了解决办法。它看起来不怎么样,但它能完成任务。
如果你们有更好的方法,让我知道。
xkftehaa3#
可能不是最有效的(实际上肯定不是有效的),但如果你必须绝对得到确切的天数,考虑到夏令时,这将工作。
qgzx9mmu4#
参考原始问题并尽可能保持代码相似,代码冻结应用的原因是因为for循环中的
![](https://i.stack.imgur.com/cQQTs.png)
add
函数不正确,而是返回一个新的DateTime
,如下所示:因此,为了修复代码,您需要做的就是将for循环的最后一部分更改为
d = d.add(const Duration(days: 1))
zpjtge225#
如果你在一个函数或类成员中实现Iterable(但你可以找到一个List对象),你仍然可以使用for循环或遍历日期范围,
和一个“for”循环,
还有一种实现迭代器的方法,所有这些都在代码上留下了最小的足迹。使用迭代器,