Java中的 ChronoZonedDateTime withZoneSameInstant() 方法及示例
ChronoZonedDateTime接口的withZoneSameInstant()方法用于通过更改时区和不使用瞬间来返回此 ChronoZonedDateTime 对象的副本。该方法基于保留相同的瞬间,因此本地时间线中的间隙和重叠具有对结果没有影响。
句法:
ChronoZonedDateTime withZoneSameInstant(ZoneId zone)
参数:此方法接受一个参数zone来更改时区。它不应为空。
返回值:此方法基于此日期时间与请求的区域返回ChronoZonedDateTime 。
异常:此方法抛出DateTimeException :如果结果超出支持的日期范围。
下面的程序说明了 withZoneSameInstant() 方法:
方案一:
// Java program to demonstrate
// ChronoZonedDateTime.withZoneSameInstant() method
import java.time.*;
import java.time.chrono.*;
public class GFG {
public static void main(String[] args)
{
// create a ChronoZonedDateTime object
ChronoZonedDateTime zonedDT
= ZonedDateTime
.parse(
"2018-12-06T19:21:12.123+05:30[Asia/Calcutta]");
// print ChronoZonedDateTime
System.out.println("ChronoZonedDateTime of Calcutta: "
+ zonedDT);
// apply withZoneSameInstant()
ChronoZonedDateTime zonedDT2
= zonedDT
.withZoneSameInstant(
ZoneId.of("Pacific/Fiji"));
// print ChronoZonedDateTime after withZoneSameInstant()
System.out.println("ChronoZonedDateTime of Fuji: "
+ zonedDT2);
}
}
输出:
ChronoZonedDateTime of Calcutta: 2018-12-06T19:21:12.123+05:30[Asia/Calcutta]
ChronoZonedDateTime of Fuji: 2018-12-07T02:51:12.123+13:00[Pacific/Fiji]
方案二:
// Java program to demonstrate
// ChronoZonedDateTime.withZoneSameInstant() method
import java.time.*;
import java.time.chrono.*;
public class GFG {
public static void main(String[] args)
{
// create a ChronoZonedDateTime object
ChronoZonedDateTime zonedDT
= ZonedDateTime
.parse(
"2018-10-25T23:12:31.123+02:00[Europe/Paris]");
// print ChronoZonedDateTime
System.out.println("ChronoZonedDateTime of Calcutta: "
+ zonedDT);
// apply withZoneSameInstant()
ChronoZonedDateTime zonedDT2
= zonedDT
.withZoneSameInstant(
ZoneId.of("Canada/Yukon"));
// print ChronoZonedDateTime after withZoneSameInstant()
System.out.println("ChronoZonedDateTime of yukon: "
+ zonedDT2);
}
}
输出:
ChronoZonedDateTime of Calcutta: 2018-10-25T23:12:31.123+02:00[Europe/Paris]
ChronoZonedDateTime of yukon: 2018-10-25T14:12:31.123-07:00[Canada/Yukon]
参考: https://docs.oracle.com/javase/9/docs/api/ Java/time/chrono/ChronoZonedDateTime.html#withZoneSameInstant-java.time.ZoneId-