如何在Java中准确地将纪元时间戳转换为java.time.Instant类型的对象?

问题描述 投票:1回答:1

我有一个Spring Boot JPA应用程序,它与第三方API进行交互。API的响应有效载荷具有一个密钥

“ created_at”:1591988071

我需要将此字段解析为java.time.Instant,以便可以与数据库中的值进行一些比较。我了解到可以使用下面提到的代码。

    Instant instant = Instant.ofEpochSecond(1591988071);

输出:

    2020-06-12T18:54:31Z

但是老实说,这个输出关闭了几个小时。

[我找到了另一种方法,如果使用的话

    String dateAsText = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")
            .format(new Date(1591988071 * 1000L));
    System.out.println(dateAsText);

我得到了所需的输出,但为String格式。

    2020-06-13 00:24:31

有人可以告诉我如何获取上述String输出,但转换为java.time.Instant类型吗?

java spring-boot datetime pojo epoch
1个回答
1
投票
您想看atZone

Instant instant = Instant.ofEpochSecond(1591988071); System.out.println(instant); final ZonedDateTime losAngeles = instant.atZone(ZoneId.of("America/Los_Angeles")); System.out.println(losAngeles); final ZonedDateTime mumbai = instant.atZone(ZoneId.of("UTC+0530")); System.out.println(mumbai);

这会给您一些您可能期望的东西

2020-06-12T18:54:31Z
2020-06-12T11:54:31-07:00[America/Los_Angeles]
2020-06-13T00:24:31+05:30[UTC+05:30]
© www.soinside.com 2019 - 2024. All rights reserved.