Java的ChronoZonedDateTime类提供了withZoneSameLocal()方法。该方法返回的是在指定时区下与当前日期时间相同的日期时间,但是调用该方法后ChronoZonedDateTime实例不会被修改,而是返回一个新的实例。
示例:
// 创建当前日期时间
LocalDateTime localDateTime = LocalDateTime.now();
ZoneId originalZone = ZoneId.systemDefault();
ChronoZonedDateTime<LocalDate> chronoZonedDateTime = originalZone.localDateTime(localDateTime).atZone(originalZone);
// 打印当前日期时间和时区
System.out.println("Original Date Time: " + chronoZonedDateTime);
System.out.println("Original Zone: " + originalZone);
// 转换为另一个时区下的日期时间
ZoneId toZone = ZoneId.of("America/New_York");
ChronoZonedDateTime<LocalDate> newZonedDateTime = chronoZonedDateTime.withZoneSameLocal(toZone);
// 打印转换后的日期时间和时区
System.out.println("New Date Time: " + newZonedDateTime);
System.out.println("New Zone: " + toZone);
输出:
Original Date Time: 2022-06-28T08:48:56.053972+08:00[Asia/Shanghai]
Original Zone: Asia/Shanghai
New Date Time: 2022-06-27T20:48:56.053972-04:00[America/New_York]
New Zone: America/New_York
在这个示例中,我们首先创建了当前日期时间和时区的ChronoZonedDateTime实例。然后,我们将该实例转换为一个新的时区,并使用withZoneSameLocal()方法获得了与当前日期时间相同的日期时间,但在新的时区下。最后,我们打印转换后的日期时间和时区。
免责声明:本文内容通过AI工具匹配关键字智能整合而成,仅供参考,火山引擎不对内容的真实、准确或完整作任何形式的承诺。如有任何问题或意见,您可以通过联系service@volcengine.com进行反馈,火山引擎收到您的反馈后将及时答复和处理。