首页 > 解决方案 > 将 ZonedDateTime 转换为 java.util.Date

问题描述

如何在不更改时区的情况下将 ZonedDateTime 转换为 java.util.Date。

在我下面的方法中,当我调用Date.from(datetime.toInstant())它时,将其转换为本地时区,在我的情况下为 SGT。

public static void printDate(ZonedDateTime datetime) {
    System.out.println("---> " + datetime.format(DateTimeFormatter.ofPattern(API_TIME_STAMP_PATTERN)));
    System.out.println(Date.from(datetime.toInstant()));
    System.out.println("\n");
}

输出

---> 2019-03-13_08:46:26.593
Wed Mar 13 16:46:26 SGT 2019

标签: javadatejava-8timezone

解决方案


您可以自己添加偏移量。请参阅使用示例java.util.Date

long offsetMillis = ZoneOffset.from(dateTime).getTotalSeconds() * 1000;
long isoMillis = dateTime.toInstant().toEpochMilli();
Date date = new Date(isoMillis + offsetMillis);

推荐阅读