【问题标题】:Create first Instant of year 2022创建 2022 年的第一个瞬间
【发布时间】:2022-10-07 18:59:09
【问题描述】:

我有一个 int 代表 2022 年,我想创建一个 Instant 对象代表一年中的第一个瞬间,意思是:2022-01-01 00:00:00

int year = 2022;

Instant instant = ...

我们如何在 Java 8 中做到这一点?

    标签: java java-time instant


    【解决方案1】:

    像这样的东西应该可以解决问题:

    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 并转换为即时。

    【讨论】:

      【解决方案2】:

      这样的事情应该可以解决问题:

      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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-01-22
        • 2017-02-20
        • 2022-07-06
        • 2023-01-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多