以下代码(主)
LocalDate d ;
DateTimeFormatter formatter;
d = LocalDate.of(2021, 11, 14);
System.out.println(d);
formatter = DateTimeFormatter.ofPattern("MM.dd.YYYY");
System.out.println(formatter.format(d));
formatter = DateTimeFormatter.ofPattern("YYYY/MM/dd");
System.out.println(formatter.format(d)+ "\n");
d = LocalDate.of(2021, 1, 1);
System.out.println(d);
formatter = DateTimeFormatter.ofPattern("MM.dd.YYYY");
System.out.println(formatter.format(d));
formatter = DateTimeFormatter.ofPattern("YYYY/MM/dd");
System.out.println(formatter.format(d));在我的Netbeans 12.5中使用最新或最近的Oracle Java 17的输出
run:
2021-11-14
14.11.2021
2021/11/14
2021-01-01
01.01.2020
2020/01/01
BUILD SUCCESSFUL (total time: 0 seconds)今天14-11月-2021的格式化输出是正常的,但是01-1-1-2021的输出是错误的.格式化输出打印2020,一年休假。
你能重复一遍吗?如果是这样的话:知道为什么会发生这种情况吗?
发布于 2021-11-14 11:26:29
根据java.time.format.DateTimeFormatter的Javadoc
基于周的日期/时间系统是在ISO8601中定义的(参见:维基百科文章)。
发布于 2021-11-14 12:00:36
你想要的是u而不是Y
Y是以周为基础的一年.如果你是个会计,这很重要。如果你不是,这是魔鬼:它似乎几乎总是正确的,除了在某些高度异国情调的日期,如1月1日。周通常被定义为:“无论该星期的星期四是哪一年,那是该周所属的年份”,因此,如果1月1日是星期五,那么包含1月1日的那一周是前一年的一周(因为该周的星期四是12月31日)。y是一年,只不过当你去BC的时候,它并没有做你想做的事情。这不太可能出现,但也不可能是以周为基础的一年。没有人喜欢2k风格的虫子,对吧?u真的做了你想象中的事情。它只给了你的年。如果需要的话是否定的。https://stackoverflow.com/questions/69962382
复制相似问题