【发布时间】:2022-10-07 18:59:09
【问题描述】:
我有一个 int 代表 2022 年,我想创建一个 Instant 对象代表一年中的第一个瞬间,意思是:2022-01-01 00:00:00。
int year = 2022;
Instant instant = ...
我们如何在 Java 8 中做到这一点?
我有一个 int 代表 2022 年,我想创建一个 Instant 对象代表一年中的第一个瞬间,意思是:2022-01-01 00:00:00。
int year = 2022;
Instant instant = ...
我们如何在 Java 8 中做到这一点?
像这样的东西应该可以解决问题:
int year = 2022;
ZoneId zoneId = ZoneId.of("UTC");
Instant instant = ZonedDateTime.of(year, 1, 1, 0, 0, 0, 0, zoneId)
.toInstant();
在目标年份 1 月 1 日 00:00:00 在所需时区创建 ZonedDateTime 并转换为即时。
【讨论】:
这样的事情应该可以解决问题:
int year = 2022;
Instant instant = Year.of(year) // 2022
.atDay(1) // 2022-01-01
.atStartOfDay() // 2022-01-01 00:00:00
.toInstant(ZoneOffset.UTC); // applied to timeline
还有更多的方法,但它们基本上都走那条路。查看 Javadoc 并探索更多:java.time package
【讨论】: