Java 8 – How to convert Instant to an OffsetDateTime ?

In this article, we will learn different ways to convert an Instant to an OffsetDateTime using different methods provided in Java 1.8 version

For OffsetDateTime to an Instant conversion, read Java 8 – How to convert OffsetDateTime to an Instant ?

1. Convert Instant to an OffsetDateTime :

Both Instant & OffsetDateTime classes has methods to convert Instant to OffsetDateTime directly using atOffset() & ofInstant() methods

  1. Convert Instant to OffsetDateTime using atOffset() method
  2. Convert Instant to OffsetDateTime using ofInstant() method
  3. Convert Instant to OffsetDateTime via ZonedDateTime

1.1 Convert Instant to OffsetDateTime using atOffset() method :

  • Convert Instant to an OffsetDateTime using Instant.atOffset() method passing ZoneOffset as inputargument

ConvertInstantToOffsetDateTime1.java

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

import java.time.Instant;
import java.time.OffsetDateTime;
import java.time.ZoneOffset;

public class ConvertInstantToOffsetDateTime1 {

	public static void main(String[] args) {

		// 1. get instantaneous moment at UTC/GMT
		Instant instant = Instant.now();
		System.out.println("Current Instant at UTC/GMT is :- \n" + instant);


		// 2. convert Instant to OffsetDateTime
		OffsetDateTime offsetDateTime = instant
				.atOffset(ZoneOffset.of("+05:30"));
		System.out.print("\nOffsetDateTime is :- \n" + offsetDateTime);
	}
}

Output:

Current Instant at UTC/GMT is :- 
2022-08-19T17:03:57.579278500Z

OffsetDateTime is :- 
2022-08-19T22:33:57.579278500+05:30

1.2 Convert Instant to OffsetDateTime using ofInstant() method :

  • Convert Instant to an OffsetDateTime using OffsetDateTime.ofInstant() method passing instant & ZoneOffset as inputarguments

ConvertInstantToOffsetDateTime2.java

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

import java.time.Instant;
import java.time.OffsetDateTime;
import java.time.ZoneOffset;

public class ConvertInstantToOffsetDateTime2 {

	public static void main(String[] args) {

		// 1. get instantaneous moment at UTC/GMT
		Instant instant = Instant.now();
		System.out.println("Current Instant at UTC/GMT is :- \n" + instant);


		// 2. convert Instant to OffsetDateTime
		OffsetDateTime offsetDateTime = OffsetDateTime
				.ofInstant(instant, ZoneOffset.UTC);
		System.out.print("\nOffsetDateTime is :- \n" + offsetDateTime);
	}
}

Output:

Current Instant at UTC/GMT is :- 
2022-08-19T17:03:44.291070300Z

OffsetDateTime is :- 
2022-08-19T17:03:44.291070300Z

1.3 Convert Instant to OffsetDateTime via ZonedDateTime :

  • First step is to convert Instant to ZonedDateTime using ZonedDateTime.ofInstant() method passing instant & ZoneOffset as inputarguments
  • After converting to ZonedDateTime, invoke toOffsetDateTime() method of ZonedDateTime to convert into OffsetDateTime

ConvertInstantToOffsetDateTime3.java

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

import java.time.Instant;
import java.time.ZonedDateTime;
import java.time.OffsetDateTime;
import java.time.ZoneOffset;

public class ConvertInstantToOffsetDateTime3 {

	public static void main(String[] args) {

		// 1. get instantaneous moment at UTC/GMT
		Instant instant = Instant.now();
		System.out.println("Current Instant at UTC/GMT is :- \n" + instant);


		// 2. convert Instant to ZonedDateTime
		ZonedDateTime zonedDateTime = ZonedDateTime
				.ofInstant(instant, ZoneOffset.UTC);
		System.out.println("\nZonedDateTime is :- \n" + zonedDateTime);


		// 3. Instant -> ZonedDateTime -> OffsetDateTime
		OffsetDateTime offsetDateTime = zonedDateTime.toOffsetDateTime();
		System.out.print("\nOffsetDateTime is :- \n" + offsetDateTime);
	}
}

Output:

Current Instant at UTC/GMT is :- 
2022-08-19T17:03:22.204370300Z

ZonedDateTime is :- 
2022-08-19T17:03:22.204370300Z

OffsetDateTime is :- 
2022-08-19T17:03:22.204370300Z

2. Convert OffsetDateTime to an Instant :

ConvertOffsetDateTimeToInstant.java

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

import java.time.Instant;
import java.time.OffsetDateTime;

public class ConvertOffsetDateTimeToInstant {

	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 Zone
		System.out.println("\nOffset is :- \n" 
				+ offsetDateTime.getOffset());


		// 3. convert OffsetDateTime to an Instant using toInstant()
		Instant instant = offsetDateTime.toInstant();
		System.out.print("\nConversion of OffsetDateTime to an Instant is :- \n"
				+ instant);
	}
}

Output:

Offset Date/time is :- 
2022-08-19T22:32:42.677821500+05:30

Offset is :- 
+05:30

Conversion of OffsetDateTime to an Instant is :- 
2022-08-19T17:02:42.677821500Z

Related Articles:

References:

Happy Coding !!
Happy Learning !!

Java 8 – How to convert Instant to number of Seconds and vice-versa ?
Java 8 – How to convert Instant to ZonedDateTime ?