【问题标题】:Bug in java LocalDate for Date Format [duplicate]日期格式的 java LocalDate 中的错误 [重复]
【发布时间】:2021-06-24 15:30:38
【问题描述】:

我正在运行一些代码,但遇到了一个我无法理解的奇怪错误。 所以我尝试调试它并运行了多个测试并发现了这个 这是我正在运行的代码

@Test
public void test(){

    LocalDate firstDay = LocalDate.parse("2020-12-01");
    LocalDate lastDay = LocalDate.parse("2020-12-31");

    String firstDayString = firstDay.format(DateTimeFormatter.ofPattern("YYYYMMdd"));
    String lastDayString = lastDay.format(DateTimeFormatter.ofPattern("YYYYMMdd"));

    System.out.println(firstDayString);
    System.out.println(lastDayString);

}

这是输出

20201201
20211231

请注意,当我尝试格式化时,最后日期的年份更改为 2021 年。 其他人注意到了吗?

【问题讨论】:

标签: java localdate


【解决方案1】:

如果您预计两个日期都是 2020 年,那么您的格式不正确。改成yyyyMMdd

  • y(小写)是年份
  • Y(大写)是“基于周的年份”

值得一读:yyyy-vs-yyyy-the-day-the-java-date-formatter-hurt-my-brain

【讨论】:

  • 用 Java 开发 20 年,我第一次注意到这一点
  • @rread A)一个人永远不会停止学习,b)处理日期和时间总是会带来新的惊喜。上周我正在使用每年 13 个月的埃塞俄比亚历法,在 java 中实现一个适配器,
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-05
  • 2019-10-27
  • 1970-01-01
  • 1970-01-01
  • 2016-09-23
相关资源
最近更新 更多