如何从 Instant.now() 获取 DayOfWeek

bar*_*ker 6 java dayofweek java-8 java-time

假设以下代码...

Instant x = Instant.now();
Run Code Online (Sandbox Code Playgroud)

如何从 x 获取星期几?

tec*_*abu 17

你必须把它转换成 ZonedDateTime

Instant.now().atZone(ZoneId.systemDefault()).getDayOfWeek()
Run Code Online (Sandbox Code Playgroud)

  • `atZone(ZoneId.of("UTC"))` 更有可能给出预期的结果。 (3认同)

bar*_*ker 6

我已经向 techtabu 授予了积分,但最终我使用了 atOffset。这就是我最后的地方......

int currentDayOfWeekValue = Instant.now().atOffset(ZoneOffset.UTC).getDayOfWeek().getValue();
Run Code Online (Sandbox Code Playgroud)

我很惊讶 Java8 日期时间库有多么困难。相似的概念有很多变体......

  • 立即的
  • 本地日期
  • 当地时间
  • 本地日期时间
  • 偏移日期时间
  • 区域偏移
  • 分区日期时间

反问句:

Zulu 和 UTC 相同还是不同?

与 Instant.now() 相关的时区是什么 - 结果表明祖鲁语?

为什么我不能像 LocalDateTime 一样操作 Instant 对象 - 方法相似但不同?

ZonedDateTime 和 OffsetDateTime 有什么不同 - 它们似乎在解决相同的概念。

  • 更简单:“OffsetDateTime.now(ZoneOffset.UTC).getDayOfWeek()”或例如“LocalDate.now(ZoneOffset.UTC).getDayOfWeek()”。 (2认同)