📌  相关文章
📜  Java中的 ZonedDateTime ofInstant() 方法及示例

📅  最后修改于: 2022-05-13 01:55:02.066000             🧑  作者: Mango

Java中的 ZonedDateTime ofInstant() 方法及示例

在 ZonedDateTime 类中,根据传递给它的参数,有两种类型的 ofInstant() 方法。

ofInstant(Instant 瞬间,ZoneId 区域)

ZonedDateTime类的ofInstant()方法用于从 Instant 创建 ZonedDateTime 的实例,并且 zoneId 作为参数传递给此方法。当您拥有 Instant 对象和 zoneId 并且您想要创建包含这两种方式的 Clock 时,这是非常有用的方法分区日期时间。

句法:

public static ZonedDateTime ofInstant(Instant instant,
                                      ZoneId zone)

参数:此方法接受两个参数Instant是创建日期时间的时刻,它不能为 null 和
zone是时区。

返回值:此方法返回分区的日期时间。

异常:此方法抛出以下异常:

  • DateTimeException – 如果结果超出支持的范围。

下面的程序说明了 ofInstant() 方法:
方案一:

// Java program to demonstrate
// ZonedDateTime.ofInstant() method
  
import java.time.*;
  
public class GFG {
    public static void main(String[] args)
    {
  
        // create Instant object
        Instant lt
            = Instant
                  .parse("2018-10-20T16:55:30.00Z");
  
        // create a ZonID
        ZoneId zone = ZoneId.of("Europe/Paris");
  
        // apply ofInstant method
        // of ZonedDateTime class
        ZonedDateTime zt = ZonedDateTime
                               .ofInstant(lt, zone);
  
        // print the result
        System.out.println("ZonedDateTime is "
                           + zt);
    }
}
输出:
ZonedDateTime is 2018-10-20T18:55:30+02:00[Europe/Paris]

方案二:

// Java program to demonstrate
// ZonedDateTime.ofInstant() method
  
import java.time.*;
  
public class GFG {
    public static void main(String[] args)
    {
  
        // create Instant object
        Instant lt
            = Instant
                  .parse("2019-01-29T23:55:59.00Z");
  
        // create a ZonID
        ZoneId zone
            = ZoneId.of("Australia/Darwin");
  
        // apply ofInstant method
        // of ZonedDateTime class
        ZonedDateTime zt
            = ZonedDateTime
                  .ofInstant(lt, zone);
  
        // print the result
        System.out.println("ZonedDateTime is "
                           + zt);
    }
}
输出:
ZonedDateTime is 2019-01-30T09:25:59+09:30[Australia/Darwin]

ofInstant(LocalDateTime localDateTime,, ZoneOffset offset, ZoneId zone)

ZonedDateTime类的ofInstant()方法用于从结合本地日期时间和偏移量形成的 localDateTime 创建 ZonedDateTime 的实例,其中所有三个 Instant、ZoneOffset 和 ZoneId 作为参数传递。
句法:

public static ZonedDateTime ofInstant(LocalDateTime localDateTime,, 
                                ZoneOffset offset, ZoneId zone)

参数:此方法接受三个参数localDateTime是本地日期时间, ZoneOffset是区域偏移量和zone是时区。

返回值:此方法返回分区的日期时间。

下面的程序说明了 ofInstant() 方法:
方案一:

// Java program to demonstrate
// ZonedDateTime.ofInstant() method
  
import java.time.*;
  
public class GFG {
    public static void main(String[] args)
    {
  
        // create localDateTime object
        LocalDateTime lt
            = LocalDateTime
                  .parse("2019-01-29T23:55:59.00");
  
        // create ZoneOffset
        ZoneOffset zoneOffset
            = ZoneOffset.ofHours(11);
  
        // create a ZonID
        ZoneId zone
            = ZoneId.of("Europe/Paris");
  
        // apply ofInstant method
        // of ZonedDateTime class
        ZonedDateTime zt
            = ZonedDateTime
                  .ofInstant(lt, zoneOffset, zone);
  
        // print the result
        System.out.println("ZonedDateTime is "
                           + zt);
    }
}
输出:
ZonedDateTime is 2019-01-29T13:55:59+01:00[Europe/Paris]

方案二:

// Java program to demonstrate
// ZonedDateTime.ofInstant() method
  
import java.time.*;
  
public class GFG {
    public static void main(String[] args)
    {
  
        // create localDateTime object
        LocalDateTime lt
            = LocalDateTime
                  .parse("2019-01-29T23:55:59.00");
  
        // create ZoneOffset
        ZoneOffset zoneOffset
            = ZoneOffset.ofHours(10);
  
        // create a ZonID
        ZoneId zone
            = ZoneId.of("Australia/Darwin");
  
        // apply ofInstant method
        // of ZonedDateTime class
        ZonedDateTime zt
            = ZonedDateTime
                  .ofInstant(lt, zoneOffset, zone);
  
        // print the result
        System.out.println("ZonedDateTime is "
                           + zt);
    }
}
输出:
ZonedDateTime is 2019-01-29T23:25:59+09:30[Australia/Darwin]

参考:
https://docs.oracle.com/javase/10/docs/api/java /time/ZonedDateTime.html#ofInstant(java .time.LocalDateTime, Java Java , Java Java )
https://docs.oracle.com/javase/10/docs/api/java Java .time.LocalDateTime, Java Java)