【问题标题】:All date output bug between two dates [duplicate]两个日期之间的所有日期输出错误[重复]
【发布时间】:2019-12-22 09:18:30
【问题描述】:

这是一种打印出两个日期之间的所有日期的方法。 但随着时间的流逝,12 月的部分将再增加一年。 有一个错误。

这是一个韩国约会。 对不起翻译。

String startDate = "2019-12-23";
String endDate = "2020-01-01";

LocalDate start = LocalDate.parse(startDate);
LocalDate end = LocalDate.parse(endDate).plusDays(1);
List<String> dates = Stream.iterate(start, date -> date.plusDays(1))
    .limit(ChronoUnit.DAYS.between(start, end))
    .map(date -> date.format(DateTimeFormatter.ofPattern("YYYYMMdd")))
    .collect(Collectors.toList());


System.err.println(dates);

错误:[20191223、20191224、20191225、20191226、20191227、20191228、20201229、20201230、20201231、20200101]

【问题讨论】:

  • 为什么 20201229、20201230、20201231 ??
  • 错误是什么?
  • @shmosel 必须获取 2019-12-23 和 2020-01-01 之间的所有日期。但从 2019-12-29 开始,这一年将是 2020 年。
  • 所以这是一个错误,而不是一个错误。
  • @shmosel 对不起。我已经修改了我的写作。

标签: java spring spring-boot java-stream localdate


【解决方案1】:

使用BASIC_ISO_DATE,它会解决你的问题

List<String> dates = Stream.iterate(start, date -> date.plusDays(1))
                .limit(ChronoUnit.DAYS.between(start, end))
                .map(date -> date.format(DateTimeFormatter.BASIC_ISO_DATE))
                .collect(Collectors.toList());


System.err.println(dates);

【讨论】:

  • 谢谢。完美的。我不会忘记回答我的第一个问题。
猜你喜欢
  • 2013-06-14
  • 2013-07-05
  • 2011-11-08
  • 2019-11-16
  • 1970-01-01
  • 2013-08-09
  • 2020-05-01
  • 1970-01-01
相关资源
最近更新 更多