首页 > 解决方案 > 如何使用 java-8 以 UTC 秒为单位转换时间和以秒为单位的时区偏移量?

问题描述

我有一个 UTC 秒的日期和它的时区偏移量。我想使用 java8 ZoneOffset 类将其转换为 yyyy-mm-dd 格式的日期字符串。以下是以秒为单位的时间和偏移量

long time = 1574962442,
long offset = 3600

现在我想使用 java-8 DateTime API 获取以下格式的日期?

 String date = 2019-11-28 // in yyyy-MM-dd

标签: javadatejava-8unix-timestamptimezone-offset

解决方案


您可以使用java-8 DateTime API 中的 Instant 从具有偏移秒的纪元秒中获取InstantOffsetDateTime

OffsetDateTime offsetDateTime = Instant.ofEpochSecond(time)
                                .atOffset(ZoneOffset.ofTotalSeconds(offset));

并从中获取LocalDate

LocalDate localdate = offsetDateTime.toLocalDate();  //2019-11-28

如果您想要字符串格式的输出,请使用DateTimeFormatter

String output = localdate.format(DateTimeFormatter.ISO_LOCAL_DATE);

推荐阅读