如果我只有年月日,如何初始化 LocalDateTime 实例?
如果我必须包含时间,我会将其设置为 00:00:00。
优雅的方式经过
LocalDate
:
LocalDateTime dateTime = LocalDate.of(2020, Month.JANUARY, 18).atStartOfDay();
System.out.println(dateTime);
此片段的输出是:
2020-01-18T00:00
如果月份是数字,例如 1 代表一月,请使用
LocalDate.of(2020, 1, 18)
代替。其余的都一样。
使用前请三思
LocalDateTime
。我们通常一起使用日期和时间来确定时间点。 LocalDateTime
不适合这样做(有些人会说它不能)。为什么以及如何?它不知道任何时区或与 UTC 的偏移量。因此,任何阅读 LocalDateTime
的人和任何软件都可以自由地将其解释为他们碰巧想到的任何时区,而不是预期的时区。对于 20 个目的中的至少 19 个,您最好选择 ZonedDateTime
或 OffsetDateTime
。例如:
ZoneId zone = ZoneId.of("America/Recife");
ZonedDateTime dateTime = LocalDate.of(2020, Month.JANUARY, 18).atStartOfDay(zone);
2020-01-18T00:00-03:00[美国/累西腓]
分钟和区域 ID 之间的
-03:00
是与 UTC 的偏移量。现在我们不留任何误解的余地。