Home  >  Article  >  Java  >  What is the difference between ZonedDateTime and OffsetDateTime

What is the difference between ZonedDateTime and OffsetDateTime

青灯夜游
青灯夜游Original
2019-03-09 10:03:015383browse

ZonedDateTime and OffsetDateTime are both very popular classes in the Java 8 DateTime API; both can store a nanosecond-accurate moment on a timeline. So are there any differences between them? The following article will explain the difference between ZonedDateTime and OffsetDateTime. I hope it will be helpful to everyone. [Video tutorial recommendation: JavaTutorial]

What is the difference between ZonedDateTime and OffsetDateTime

What is ZonedDateTime?

ZonedDateTime is an immutable representation of a date-time with a time zone in the ISO-8601 calendar system (example: 2007-12-03T10:15:30 01:00 Europe/Paris). It holds the equivalent of three separate objects: localdatetime, zoneid, and resolved zoneoffset.

Here, ZoneID determines how and when the offset changes. Therefore, offsets cannot be set freely, as the zone controls which offsets are valid.

To get the current ZonedDateTime for a specific zone, we will use:

ZoneId zone = ZoneId.of("Europe/Berlin");
ZonedDateTime zonedDateTime = ZonedDateTime.now(zone);

The ZonedDateTime class also provides built-in methods to convert a given date from one time zone to another:

ZonedDateTime destZonedDateTime = sourceZonedDateTime.withZoneSameInstant(destZoneId);

Finally, it fully understands DST and handles daylight saving time adjustments. It is often useful when we want to display a datetime field in a specific time zone.

What is OffsetDateTime?

OffsetDateTime is an immutable representation of a date-time that exists with UTC/Greenwich time in the ISO-8601 calendar system (such as 2007-12-03T10:15:30 01:00) offset. In other words, it stores all date and time fields, accurate to nanoseconds, and offsets from GMT/UTC.

Let’s get the current OffsetDateTime from GMT/UTC, offset by two hours:

ZoneOffset zoneOffSet= ZoneOffset.of("+02:00");
OffsetDateTime offsetDateTime = OffsetDateTime.now(zoneOffSet);

Difference between ZonedDateTime and OffsetDateTime

ZonedDateTime:

● Stores all date and time fields with nanosecond precision, time zone, and zone offset for handling ambiguous local date and time

● It is not possible to freely set the offset, because the zone controls the effective offset value

● Fully supports DST and handles daylight saving time adjustments

● It is very convenient to display date and time fields in user-specific time zones

OffsetDateTime:

● Stores all date and time fields with nanosecond precision and offset from GMT/UTC (no time zone information)

● Should be used to store dates in the database or communicate through the network

The above is the entire content of this article, I hope it will be helpful to everyone's learning. For more exciting content, you can pay attention to the relevant tutorial columns of the PHP Chinese website! ! !

The above is the detailed content of What is the difference between ZonedDateTime and OffsetDateTime. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn