java - 获取给定开始和结束日期的日期列表

标签 java loops date

给定两个日期(开始日期和结束日期,格式为 M,YYYY),我想创建一个数组列表,其中每个元素的日期格式为 M,YYYY,介于开始日期和结束日期之间,包括在内。

例如,给定日期 10,2010 和 2,2011,我的列表应该如下所示:

list = {(10,2010),(11,2010),(12,2010),(1,2011),(2,2011)};

我可以通过创建一个 while 循环(while startYear < endYear)、计算起始月份、for 循环到第 12 个月、将日期插入列表等来实现。

但我觉得必须有一种更有效的方法来解决这个问题,因为这需要对开始月份和结束年份进行多次检查。是否有我没有看到的更好的解决方案?

最佳答案

将日期存储为对象而不是年、月“成对”存储更有意义。例如,使用 YearMonth java.time 中的类API(Java 8 及更高版本):

YearMonth from = YearMonth.of(2010, 10);
YearMonth to = YearMonth.of(2011, 2);
List<YearMonth> list = new ArrayList<> ();

for (YearMonth ym = from; !ym.isAfter(to); ym = ym.plusMonths(1)) {
  list.add(ym);
}

或者使用 stream API (不确定在这种情况下它是否更干净):

List<YearMonth> list = Stream.iterate(from, ym -> ym.plusMonths(1))
                             .limit(MONTHS.between(from, to) + 1)
                             .collect(toList());

关于java - 获取给定开始和结束日期的日期列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37681297/

相关文章:

java - 使用 while 循环检查任务何时完成时 GUI 被阻塞

r - 获取 Data.table 中的日期差异

java - 如何使用 Apache POI 合并同一行中的单元格?

java - JList 不可显示

java - pom 和 jar 文件的构建工具的 Gradle 错误

mysql - 计算每个单元格与下一个单元格的日期差异

javascript - 如何在 JavaScript 中获得两个月(YYYYMM)之间的差异?

javascript - .each() 循环在开始之前等待另一个循环完成

Python 循环不应该工作但仍然可以工作

java - java中如何每行输出多个数字