gpt4 book ai didi

java - 指定 ZonedDateTime 的时区而不更改实际日期

转载 作者:行者123 更新时间:2023-12-03 18:48:53 28 4
gpt4 key购买 nike

我有一个保存日期(不是当前日期)的 Date 对象,我需要以某种方式指定该日期为 UTC,然后将其转换为“欧洲/巴黎”,即 +1 小时。

public static LocalDateTime toLocalDateTime(Date date){
return ZonedDateTime.of(LocalDateTime.ofInstant(date.toInstant(), ZoneOffset.UTC), ZoneId.of("Europe/Paris")).toLocalDateTime();
}

给定日期“2018-11-08 15:00:00”,这会将日期转换为“2018-11-08 14:00:00”。我需要它从 UTC 转换为欧洲/巴黎 - 而不是相反。

最佳答案

您可以使用 ZonedDateTime.withZoneSameInstant() 从UTC移动到巴黎时间的方法:

Date date = new Date();
ZonedDateTime utc = date.toInstant().atZone(ZoneOffset.UTC);
ZonedDateTime paris = utc.withZoneSameInstant(ZoneId.of("Europe/Paris"));
System.out.println(utc);
System.out.println(paris);
System.out.println(paris.toLocalDateTime());

打印:
2018-11-08T10:25:18.223Z
2018-11-08T11:25:18.223+01:00[Europe/Paris]
2018-11-08T11:25:18.223

关于java - 指定 ZonedDateTime 的时区而不更改实际日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53205161/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com