Java 8 – How to convert java.util.Date to an OffsetDateTime in different ways ?

In this article, we will learn how to convert java.util.Date to an OffsetDateTime in different ways in Java 1.8 version

Date to OffsetDateTime conversion :

There are many ways to convert java.util.Date to an OffsetDateTime –

  1. Using java.sql.Date & Timestamp & atOffset() method
  2. Using Timestamp & atOffset() method
  3. Using LocalDateTime.parse() and atZone() & toOffsetDateTime() methods
  4. Using GregorianCalendar and toZonedDateTime() & toOffsetDateTime() methods
  5. Using Instant & atOffset() method
  6. Using Instant.ofEpochMilli() & atOffset() methods

DifferentWaysToConvertJavaUtilDateToOffsetDateTime.java

package in.bench.resources.java8.offsetdatetime.examples;

import java.sql.Timestamp;
import java.time.Instant;
import java.time.LocalDateTime;
import java.time.OffsetDateTime;
import java.time.ZoneId;
import java.time.ZoneOffset;
import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;

public class DifferentWaysToConvertJavaUtilDateToOffsetDateTime {

	public static void main(String[] args) {

		// get current date
		Date date = new Date();
		System.out.println("Current Date is = " + date);


		// print to console
		System.out.println("\njava.util.Date to java.time.OffsetDateTime conversion :-");
		System.out.println("-----------------------------------------------------");


		// 1. Using java.sql.Date & Timestamp & atOffset() method
		java.sql.Date sqlDate = new java.sql.Date(new java.util.Date().getTime());
		Timestamp timestamp1 = new java.sql.Timestamp(sqlDate.getTime());
		LocalDateTime localDateTime1 = timestamp1.toLocalDateTime();
		ZoneOffset zoneOffset1 = ZoneOffset.of("+05:30");
		OffsetDateTime offsetDateTime1 = localDateTime1.atOffset(zoneOffset1);
		System.out.println("1. Using java.sql.Date & Timestamp & atOffset() method :- \n" 
				+ offsetDateTime1);


		// 2. Using Timestamp & atOffset() method
		Date date2 = new Date();
		Timestamp timestamp2 = new Timestamp(date2.getTime());
		LocalDateTime localDateTime2 = timestamp2.toLocalDateTime();
		ZoneOffset zoneOffset2 = ZoneOffset.of("+05:30");
		OffsetDateTime offsetDateTime2 = localDateTime2.atOffset(zoneOffset2);
		System.out.println("\n2. Using Timestamp & atOffset() method :- \n" 
				+ offsetDateTime2);


		// 3. Using LocalDateTime.parse() and atZone() & toOffsetDateTime() methods
		Date date3 = new Date();
		LocalDateTime localDateTime3 = LocalDateTime.parse(
				date3.toString(),
				DateTimeFormatter.ofPattern("EEE MMM dd HH:mm:ss zzz yyyy")
				);
		ZonedDateTime zonedDateTime3 = localDateTime3.atZone(ZoneId.systemDefault());
		OffsetDateTime offsetDateTime3 = zonedDateTime3.toOffsetDateTime();
		System.out.println("\n3. Using LocalDateTime.parse() and"
				+ " atZone() & toOffsetDateTime() methods :- \n" 
				+ offsetDateTime3);


		// 4. Using GregorianCalendar and toZonedDateTime() & toOffsetDateTime() methods
		Date date4 = new Date();
		GregorianCalendar gregorianCalendar = (GregorianCalendar) Calendar.getInstance();
		gregorianCalendar.setTime(date4);
		OffsetDateTime offsetDateTime4 = gregorianCalendar // GregorianCalendar
				.toZonedDateTime() // ZonedDateTime
				.toOffsetDateTime(); // OffsetDateTime
		System.out.println("\n4. Using GregorianCalendar and"
				+ " toZonedDateTime() & toOffsetDateTime() methods :- \n" 
				+ offsetDateTime4);


		// 5. Using Instant & atOffset() method
		Date date5 = new Date();
		Instant instant5 = date5.toInstant();
		ZoneOffset zoneOffset5 = ZoneOffset.of("+05:30");
		OffsetDateTime offsetDateTime5 = instant5.atOffset(zoneOffset5);
		System.out.println("\n5. Using Instant & atOffset() method :- \n"
				+ offsetDateTime5);


		// 6. Using Instant.ofEpochMilli() & atOffset() methods
		Date date6 = new Date();
		Instant instant6 = Instant.ofEpochMilli(date6.getTime());
		ZoneOffset zoneOffset6 = ZoneOffset.of("+05:30");
		OffsetDateTime offsetDateTime6 = instant6.atOffset(zoneOffset6);
		System.out.print("\n6. Using Instant.ofEpochMilli() & atOffset() methods :- \n"
				+ offsetDateTime6);
	}
}

Output:

Current Date is = Wed Aug 17 10:22:54 IST 2022

java.util.Date to java.time.OffsetDateTime conversion :-
-----------------------------------------------------
1. Using java.sql.Date & Timestamp & atOffset() method :- 
2022-08-17T10:22:54.518+05:30

2. Using Timestamp & atOffset() method :- 
2022-08-17T10:22:54.522+05:30

3. Using LocalDateTime.parse() and atZone() & toOffsetDateTime() methods :- 
2022-08-17T10:22:54+05:30

4. Using GregorianCalendar and toZonedDateTime() & toOffsetDateTime() methods :- 
2022-08-17T10:22:54.754+05:30

5. Using Instant & atOffset() method :- 
2022-08-17T10:22:54.773+05:30

6. Using Instant.ofEpochMilli() & atOffset() methods :- 
2022-08-17T10:22:54.773+05:30

Related Articles:



References:



Happy Coding !!
Happy Learning !!

Java 8 – How to add Date and Time fields to OffsetDateTime ?
Java 8 – How to convert OffsetDateTime to XMLGregorianCalendar and vice-versa ?