Java LocalDate 无效的日期格式
Java LocalDate invalid date formatting
我有一个脚本可以获取当前日期的上个月(每月第一个日期执行的脚本)脚本return除了一月
我尝试用这些脚本重现案例
import java.time.*;
class Main {
public static void main(String[] args) {
LocalDate today = LocalDate.of(2022, 1, 1);
LocalDate prevMonth = today.minusDays(1);
System.out.println("Date object " + prevMonth);
System.out.println("Date formatted " + prevMonth.format(DateTimeFormatter.ofPattern("YYYY-MM-dd")));
}
}
输出:
Date object 2021-12-31
Date formatted 2022-12-31
result
环境
openjdk 11.0.11 2021-04-20
OpenJDK Runtime Environment (build 11.0.11+9-Ubuntu-0ubuntu2.18.04)
OpenJDK 64-Bit Server VM (build 11.0.11+9-Ubuntu-0ubuntu2.18.04, mixed mode, sharing)
bug 是从哪里来的,或者你有更好的主意?
PS:我更喜欢 LocalDate 而不是日历
大写 'D' 是年中的第几天,而不是月中的第几天。
https://docs.oracle.com/javase/8/docs/api/java/time/format/DateTimeFormatter.html
您可能正在寻找 'd' - 月中的某天。
DateTimeFormatter.ofPattern("YYYY-MM-dd")
你真的需要仔细阅读文档。
不要使用Y
。
Y 表示 'weekyear'。你真的,真的,真的不想要这个。它会在 1 月 1 日 左右 的某个地方变成 2022,但不会在 1 月 1 日(好吧,大约 7 年左右,它设法完美排列)。 X 年的某些天的年份为 (X+1),Z 年的某些天的年份为 (Z-1):毕竟,一周从星期一开始,所以'weekyear' 除星期一外无法更改。 1月1号出来?不总是星期一。
你想要u
。 y
总是很棒,但是 y 在 0 年之前的几年里做了一些愚蠢的事情。除此之外,u
和 y
是相同的。换句话说,u
更好,这是你应该使用的。
你也不想要D
.
D 表示一年中的某一天。你想要一个月中的哪一天。那就是符号 d
(小写)。
尝试"uuuu-MM-dd"
。
我有一个脚本可以获取当前日期的上个月(每月第一个日期执行的脚本)脚本return除了一月
我尝试用这些脚本重现案例
import java.time.*;
class Main {
public static void main(String[] args) {
LocalDate today = LocalDate.of(2022, 1, 1);
LocalDate prevMonth = today.minusDays(1);
System.out.println("Date object " + prevMonth);
System.out.println("Date formatted " + prevMonth.format(DateTimeFormatter.ofPattern("YYYY-MM-dd")));
}
}
输出:
Date object 2021-12-31
Date formatted 2022-12-31
result
环境
openjdk 11.0.11 2021-04-20
OpenJDK Runtime Environment (build 11.0.11+9-Ubuntu-0ubuntu2.18.04)
OpenJDK 64-Bit Server VM (build 11.0.11+9-Ubuntu-0ubuntu2.18.04, mixed mode, sharing)
bug 是从哪里来的,或者你有更好的主意?
PS:我更喜欢 LocalDate 而不是日历
大写 'D' 是年中的第几天,而不是月中的第几天。
https://docs.oracle.com/javase/8/docs/api/java/time/format/DateTimeFormatter.html
您可能正在寻找 'd' - 月中的某天。
DateTimeFormatter.ofPattern("YYYY-MM-dd")
你真的需要仔细阅读文档。
不要使用Y
。
Y 表示 'weekyear'。你真的,真的,真的不想要这个。它会在 1 月 1 日 左右 的某个地方变成 2022,但不会在 1 月 1 日(好吧,大约 7 年左右,它设法完美排列)。 X 年的某些天的年份为 (X+1),Z 年的某些天的年份为 (Z-1):毕竟,一周从星期一开始,所以'weekyear' 除星期一外无法更改。 1月1号出来?不总是星期一。
你想要u
。 y
总是很棒,但是 y 在 0 年之前的几年里做了一些愚蠢的事情。除此之外,u
和 y
是相同的。换句话说,u
更好,这是你应该使用的。
你也不想要D
.
D 表示一年中的某一天。你想要一个月中的哪一天。那就是符号 d
(小写)。
尝试"uuuu-MM-dd"
。