In this article, we will learn how to convert OffsetDateTime to ZonedDateTime using different methods like toZonedDateTime(), atZoneSameInstant() and atZoneSimilarLocal() methods of OffsetDateTime provided in Java 1.8 version
For ZonedDateTime to an OffsetDateTime conversion, read Java 8 – How to convert ZonedDateTime to an OffsetDateTime ?
Convert OffsetDateTime to ZonedDateTime :
- There are different methods available in OffsetDateTime for converting into ZonedDateTime for different purposes as listed below,
- toZonedDateTime() – Converts invoking OffsetDateTime to a ZonedDateTime using the offset as the zone ID
- atZoneSameInstant(ZoneId) – Combines invoking OffsetDateTime with a time-zone to create a ZonedDateTime ensuring that the result has the same instant
- atZoneSimilarLocal(ZoneId) – Combines invoking OffsetDateTime with a time-zone to create a ZonedDateTime trying to keep the same local date and time
- Using these methods, it is very easy to convert OffsetDateTime to ZonedDateTime
- After conversion, ZonedDateTime have Date & Time parts same as that of OffsetDateTime and additionally provided ZoneId
- Lets see an example for conversion of OffsetDateTime to ZonedDateTime in the below illustration
ConvertOffsetDateTimeToZonedDateTime.java
package in.bench.resources.java8.offsetdatetime.examples;
import java.time.OffsetDateTime;
import java.time.ZoneId;
import java.time.ZonedDateTime;
public class ConvertOffsetDateTimeToZonedDateTime {
public static void main(String[] args) {
// 1. get Offset Date/time
OffsetDateTime offsetDateTime = OffsetDateTime.now();
System.out.println("Offset Date/time is :- \n"
+ offsetDateTime);
// 2. get Offset
System.out.println("\nOffset is :- \n"
+ offsetDateTime.getOffset());
// 3. get Offset
System.out.println("\nDefault ZoneId is :- \n"
+ ZoneId.systemDefault());
// 4. convert OffsetDateTime to ZonedDateTime using toZonedDateTime()
ZonedDateTime zonedDateTime1 = offsetDateTime.toZonedDateTime();
System.out.println("\n1. Conversion of OffsetDateTime to ZonedDateTime"
+ " using toZonedDateTime() is :- \n"
+ zonedDateTime1);
// 5. different zone - Europe/Paris
ZoneId zoneId = ZoneId.of("Europe/Paris");
// 6. convert OffsetDateTime to ZonedDateTime using atZoneSameInstant(ZoneId)
ZonedDateTime zonedDateTime2 = offsetDateTime.atZoneSameInstant(zoneId);
System.out.println("\n2. Conversion of OffsetDateTime to ZonedDateTime"
+ " using atZoneSameInstant(ZoneId) is :- \n"
+ zonedDateTime2);
// 7. convert OffsetDateTime to ZonedDateTime using atZoneSimilarLocal(ZoneId)
ZonedDateTime zonedDateTime3 = offsetDateTime.atZoneSimilarLocal(zoneId);
System.out.print("\n3. Conversion of OffsetDateTime to ZonedDateTime"
+ " using atZoneSimilarLocal(ZoneId) is :- \n"
+ zonedDateTime3);
}
}
Output:
Offset Date/time is :-
2022-08-17T09:07:15.247711600+05:30
Offset is :-
+05:30
Default ZoneId is :-
Asia/Calcutta
1. Conversion of OffsetDateTime to ZonedDateTime using toZonedDateTime() is :-
2022-08-17T09:07:15.247711600+05:30
2. Conversion of OffsetDateTime to ZonedDateTime using atZoneSameInstant(ZoneId) is :-
2022-08-17T05:37:15.247711600+02:00[Europe/Paris]
3. Conversion of OffsetDateTime to ZonedDateTime using atZoneSimilarLocal(ZoneId) is :-
2022-08-17T09:07:15.247711600+02:00[Europe/Paris]
Related Articles:
- Java 8 – OffsetDateTime with method details and examples
- Java 8 – How to get Date, Time and Offset fields from OffsetDateTime ?
- Java 8 – How to form OffsetDateTime passing Date, Time and Offset fields ?
- Java 8 – How to form OffsetDateTime passing LocalDate, LocalTime and ZoneOffset ?
- Java 8 – How to form OffsetDateTime passing LocalDateTime and ZoneOffset ?
- Java 8 – How to form OffsetDateTime passing Instant and ZoneId ?
- Java 8 – How to parse OffsetDateTime in String form ?
- Java 8 – How to convert String to OffsetDateTime ?
- Java 8 – How to convert ZonedDateTime to String ?
- Java 8 – How to convert OffsetDateTime in different formats ?
- Java 8 – How to convert OffsetDateTime in different Format Style ?
- Java 8 – How to convert OffsetDateTime to LocalDateTime ?
- Java 8 – How to convert OffsetDateTime to ZonedDateTime ?
- Java 8 – How to convert OffsetDateTime to an Instant ?
- Java 8 – How to extract LocalDate and LocalTime and LocalDateTime from OffsetDateTime ?
- Java 8 – How to extract OffsetTime from OffsetDateTime ?
- Java 8 – How to convert OffsetDateTime to number of Seconds ?
- Java 8 – How to convert OffsetDateTime to java.util.Date and vice-versa ?
- Java 8 – How to convert OffsetDateTime to java.sql.Timestamp and vice-versa ?
- Java 8 – How to convert OffsetDateTime to Calendar and vice-versa ?
- Java 8 – How to convert OffsetDateTime to GregorianCalendar and vice-versa ?
- Java 8 – How to convert OffsetDateTime to XMLGregorianCalendar and vice-versa ?
- Java 8 – How to convert java.util.Date to an OffsetDateTime in different ways ?
- Java 8 – How to add Date and Time fields to OffsetDateTime ?
- Java 8 – How to subtract Date and Time fields from OffsetDateTime ?
- Java 8 – How to alter Date, Time and Offset fields of OffsetDateTime ?
- Java 8 – How to check whether an OffsetDateTime is Before another OffsetDateTime ?
- Java 8 – How to check whether an OffsetDateTime is After another OffsetDateTime ?
- Java 8 – How to compare two OffsetDateTime instances ?
- Java 8 – How to find difference between two OffsetDateTime using Period & Duration ?
- Java 9 – Find difference between two OffsetDateTime instances upto nanosecond precision ?
- More Java 8 Date/Time API examples
References:
- https://docs.oracle.com/javase/8/docs/api/java/time/ZonedDateTime.html
- https://docs.oracle.com/javase/8/docs/api/java/time/OffsetDateTime.html
- https://docs.oracle.com/javase/8/docs/api/java/time/ZoneOffset.html
- https://docs.oracle.com/javase/7/docs/api/java/util/Date.html
- https://docs.oracle.com/javase/7/docs/api/java/util/Calendar.html
Happy Coding !!
Happy Learning !!