如何使用 java-8 将 utc 秒中的时间和秒中的时区偏移量转换为日期?

How to convert time in utc second and timezone offset in second to date using java-8?

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

long time = 1574962442,
long offset = 3600

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

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

您可以使用 Instant from java-8 DateTime API to obtains an OffsetDateTime of Instant from epoch seconds with offset seconds

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);

您可以使用 java 8 LocalDateTime 个 API 来实现此目的。

LocalDateTime dateTime = LocalDateTime.ofEpochSecond(1574962442, 0, ZoneOffset.ofTotalSeconds(3600));

// for format
String formatted = dateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"))