LocalDateTime类对象中不包含时区信息,因此它不能精确的表示一个时间点。为解决这个问题,Java8新日期时间系统中定义了两个包含时区信息的日期时间类,这两个类分别是ZonedDateTime与OffsetDateTime。虽然这两个类都包含时区信息,但这两个类有一点的区别:ZonedDateTime类对象中包含时差的信息,也有可能包含城市或地区的信息,而OffsetDateTime类中只包含时差的信息,不包含城市或地区的信息。之所以说ZonedDateTime类对象中“有可能”包含城市或地区的信息,是因为ZonedDateTime类中定义了一个ZoneId类型的属性,该属性如果由一个ZoneRegion类对象完成初始化,那么ZonedDateTime类对象中就会包含城市或地区的信息,如果该属性由ZoneOffset类对象完成初始化,则ZonedDateTime类对象中就不包含城市或地区的信息。
通常情况下,创建ZonedDateTime和OffsetDateTime类的对象也是通过now()和of()这两个方法完成。通过now()方法所创建的出对象表示系统当前的日期时间。而如果通过of()方法创建对象,需要给of()方法传递3部分信息,分别是:日期、时间以及时区,日期和时间总共有3种方法来表示: