Java 8 – How to convert OffsetDateTime in different formats ?

In this article, we will learn how to convert OffsetDateTime in different formats using Java 1.8 version or in short how to convert OffsetDateTime into String-form

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

1. Convert OffsetDateTime in different formats :

  • We can convert default ISO_OFFSET_DATE_TIME format (yyyy-MM-ddTHH:mm:ss.nnn+/-HH:mm) to any other formats using OffsetDateTime.format() method by passing DateTimeFormatter as argument with required pattern in String-form
  • In below illustration, we are using 6 different custom formats as mentioned below,
    1. DateTimeFormatter.ofPattern(“dd-MM-yyyy HH:mm:ss.nnn XXX“)
    2. DateTimeFormatter.ofPattern(“dd-MM-yyyy hh:mm:ss.nnn a XXX“)
    3. DateTimeFormatter.ofPattern(“dd.MM.yyyy HH:mm:ss XXX“)
    4. DateTimeFormatter.ofPattern(“dd-MMM-yyyy hh:mm:ss a XXX“)
    5. DateTimeFormatter.ofPattern(“E dd/MMMM/yyyy HH:mm XXX“)
    6. DateTimeFormatter.ofPattern(“EEEE MMMM dd, yyyy hh:mm a XXX“)
  • Note: If the specified custom format/pattern isn’t in correct form then DateTimeParseException is thrown

2. OffsetDateTime examples in different formats :

  1. OffsetDateTime to (dd-MM-yyyy HH:mm:ss.nnn XXX) format
  2. OffsetDateTime to (dd-MM-yyyy hh:mm:ss.nnn a XXX) format
  3. OffsetDateTime to (dd.MM.yyyy HH:mm:ss XXX) format
  4. OffsetDateTime to (dd-MMM-yyyy hh:mm:ss a XXX) format
  5. OffsetDateTime to (E dd/MMMM/yyyy HH:mm XXX) format
  6. OffsetDateTime to (EEEE MMMM dd, yyyy hh:mm a XXX) format

2.1 OffsetDateTime to (dd-MM-yyyy HH:mm:ss.nnn XXX) format :

  • This example converts OffsetDateTime in default (yyyy-MM-ddTHH:mm:ss.nnn+/-HH:mm) format to (dd-MM-yyyy HH:mm:ss.nnn XXX) format

FormatOffsetDateTimeExample1.java

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

import java.time.OffsetDateTime;
import java.time.format.DateTimeFormatter;

public class FormatOffsetDateTimeExample1 {

	public static void main(String[] args) {

		// 1. get current system date/time with offset
		OffsetDateTime offsetDateTime = OffsetDateTime.now();
		System.out.println("Current System Date/time is :- \n" 
				+ offsetDateTime);


		// 2. DateTimeFormatter
		DateTimeFormatter dateTimeFormatter = DateTimeFormatter
				.ofPattern("dd-MM-yyyy HH:mm:ss.nnn XXX");


		// 3. OffsetDateTime to (dd-MM-yyyy HH:mm:ss.nnn XXX) format in String form
		String str = offsetDateTime.format(dateTimeFormatter);
		System.out.print("\nOffsetDateTime to (dd-MM-yyyy HH:mm:ss.nnn XXX) format :- \n" 
				+ str);
	}
}

Output:

Current System Date/time is :- 
2022-08-16T18:56:03.068734400+05:30

OffsetDateTime to (dd-MM-yyyy HH:mm:ss.nnn XXX) format :- 
16-08-2022 18:56:03.68734400 +05:30

2.2 OffsetDateTime to (dd-MM-yyyy hh:mm:ss.nnn a XXX) format :

  • This example converts OffsetDateTime in default (yyyy-MM-ddTHH:mm:ss.nnn+/-HH:mm) format to (dd-MM-yyyy hh:mm:ss.nnn a XXX) format

FormatOffsetDateTimeExample2.java

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

import java.time.OffsetDateTime;
import java.time.format.DateTimeFormatter;

public class FormatOffsetDateTimeExample2 {

	public static void main(String[] args) {

		// 1. get current system date/time with offset
		OffsetDateTime offsetDateTime = OffsetDateTime.now();
		System.out.println("Current System Date/time is :- \n" 
				+ offsetDateTime);


		// 2. DateTimeFormatter
		DateTimeFormatter dateTimeFormatter = DateTimeFormatter
				.ofPattern("dd-MM-yyyy hh:mm:ss.nnn a XXX");


		// 3. OffsetDateTime to (dd-MM-yyyy hh:mm:ss.nnn a XXX) format in String form
		String str = offsetDateTime.format(dateTimeFormatter);
		System.out.print("\nOffsetDateTime to (dd-MM-yyyy hh:mm:ss.nnn a XXX) format :- \n" 
				+ str);
	}
}

Output:

Current System Date/time is :- 
2022-08-16T18:57:10.280906+05:30

OffsetDateTime to (dd-MM-yyyy hh:mm:ss.nnn a XXX) format :- 
16-08-2022 06:57:10.280906000 pm +05:30

2.3 OffsetDateTime to (dd.MM.yyyy HH:mm:ss XXX) format :

  • This example converts OffsetDateTime in default (yyyy-MM-ddTHH:mm:ss.nnn+/-HH:mm) format to (dd.MM.yyyy HH:mm:ss XXX) format

FormatOffsetDateTimeExample3.java

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

import java.time.OffsetDateTime;
import java.time.format.DateTimeFormatter;

public class FormatOffsetDateTimeExample3 {

	public static void main(String[] args) {

		// 1. get current system date/time with offset
		OffsetDateTime offsetDateTime = OffsetDateTime.now();
		System.out.println("Current System Date/time is :- \n" 
				+ offsetDateTime);


		// 2. DateTimeFormatter
		DateTimeFormatter dateTimeFormatter = DateTimeFormatter
				.ofPattern("dd.MM.yyyy HH:mm:ss XXX");


		// 3. OffsetDateTime to (dd.MM.yyyy HH:mm:ss XXX) format in String form
		String str = offsetDateTime.format(dateTimeFormatter);
		System.out.print("\nOffsetDateTime to (dd.MM.yyyy HH:mm:ss XXX) format :- \n" 
				+ str);
	}
}

Output:

Current System Date/time is :- 
2022-08-16T19:19:55.662667500+05:30

OffsetDateTime to (dd.MM.yyyy HH:mm:ss XXX) format :- 
16.08.2022 19:19:55 +05:30

2.4 OffsetDateTime to (dd-MMM-yyyy hh:mm:ss a XXX) format :

  • This example converts OffsetDateTime in default (yyyy-MM-ddTHH:mm:ss.nnn+/-HH:mm) format to (dd-MMM-yyyy hh:mm:ss a XXX) format

FormatOffsetDateTimeExample4.java

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

import java.time.OffsetDateTime;
import java.time.format.DateTimeFormatter;

public class FormatOffsetDateTimeExample4 {

	public static void main(String[] args) {

		// 1. get current system date/time
		OffsetDateTime offsetDateTime = OffsetDateTime.now();
		System.out.println("Current System Date/time is :- \n" 
				+ offsetDateTime);


		// 2. DateTimeFormatter
		DateTimeFormatter dateTimeFormatter = DateTimeFormatter
				.ofPattern("dd-MMM-yyyy hh:mm:ss a XXX");


		// 3. OffsetDateTime to (dd-MMM-yyyy hh:mm:ss a XXX) format in String form
		String str = offsetDateTime.format(dateTimeFormatter);
		System.out.print("\nOffsetDateTime to (dd-MMM-yyyy hh:mm:ss a XXX) format :- \n" 
				+ str);
	}
}

Output:

Current System Date/time is :- 
2022-08-16T19:21:42.642466600+05:30

OffsetDateTime to (dd-MMM-yyyy hh:mm:ss a XXX) format :- 
16-Aug-2022 07:21:42 pm +05:30

2.5 OffsetDateTime to (E dd/MMMM/yyyy HH:mm XXX) format :

  • This example converts OffsetDateTime in default (yyyy-MM-ddTHH:mm:ss.nnn+/-HH:mm) format to (E dd/MMMM/yyyy HH:mm XXX) format

FormatOffsetDateTimeExample5.java

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

import java.time.OffsetDateTime;
import java.time.format.DateTimeFormatter;

public class FormatOffsetDateTimeExample5 {

	public static void main(String[] args) {

		// 1. get current system date/time
		OffsetDateTime offsetDateTime = OffsetDateTime.now();
		System.out.println("Current System Date/time is :- \n" 
				+ offsetDateTime);


		// 2. DateTimeFormatter
		DateTimeFormatter dateTimeFormatter = DateTimeFormatter
				.ofPattern("E dd/MMMM/yyyy HH:mm XXX");


		// 3. OffsetDateTime to (E dd/MMMM/yyyy HH:mm XXX) format in String form
		String str = offsetDateTime.format(dateTimeFormatter);
		System.out.print("\nOffsetDateTime to (E dd/MMMM/yyyy HH:mm XXX) format :- \n" 
				+ str);
	}
}

Output:

Current System Date/time is :- 
2022-08-16T19:23:09.606449300+05:30

OffsetDateTime to (E dd/MMMM/yyyy HH:mm XXX) format :- 
Tue 16/August/2022 19:23 +05:30

2.6 OffsetDateTime to (EEEE MMMM dd, yyyy hh:mm a XXX) format :

  • This example converts OffsetDateTime in default (yyyy-MM-ddTHH:mm:ss.nnn+/-HH:mm) format to (EEEE MMMM dd, yyyy hh:mm a XXX) format

FormatOffsetDateTimeExample6.java

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

import java.time.OffsetDateTime;
import java.time.format.DateTimeFormatter;

public class FormatOffsetDateTimeExample6 {

	public static void main(String[] args) {

		// 1. get current system date/time
		OffsetDateTime offsetDateTime = OffsetDateTime.now();
		System.out.println("Current System Date/time is :- \n" 
				+ offsetDateTime);


		// 2. DateTimeFormatter
		DateTimeFormatter dateTimeFormatter = DateTimeFormatter
				.ofPattern("EEEE MMMM dd, yyyy hh:mm a XXX");


		// 3. OffsetDateTime to ("EEEE MMMM dd, yyyy hh:mm a XXX") format in String form
		String str = offsetDateTime.format(dateTimeFormatter);
		System.out.print("\nOffsetDateTime to (EEEE MMMM dd, yyyy hh:mm a XXX) format :- \n" 
				+ str);
	}
}

Output:

Current System Date/time is :- 
2022-08-16T19:24:31.151118600+05:30

OffsetDateTime to (EEEE MMMM dd, yyyy hh:mm a XXX) format :- 
Tuesday August 16, 2022 07:24 pm +05:30

3. Throws DateTimeParseException for Invalid format :

  • If the specified pattern/format is invalid then DateTimeParseException is thrown
  • In the below illustration, small-letter ‘m‘ is used for Month which is wrong
  • Date notation,
    • Capital-letter ‘M‘ should be used for Month
    • Small-letter ‘d‘ should be used for Day
    • Small-letter ‘y‘ should be used for Year
  • Time notation,
    • Capital-letter ‘H‘ should be used for 24-hour Hour format
    • Small-letter ‘h‘ should be used for 12-hour Hour format
    • Small-letter ‘m‘ should be used for Minute
    • Small-letter ‘s‘ should be used for Second
    • Small-letter ‘n‘ should be used for Nanosecond

FormatOffsetDateTimeException.java

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

import java.time.OffsetDateTime;
import java.time.format.DateTimeFormatter;

public class FormatOffsetDateTimeException {

	public static void main(String[] args) {

		// 1. get current system date/time
		OffsetDateTime offsetDateTime = OffsetDateTime.now();
		System.out.println("Current System Date/time is :- \n" 
				+ offsetDateTime);


		// 2. DateTimeFormatter
		DateTimeFormatter dateTimeFormatter = DateTimeFormatter
				.ofPattern("dd.mmm.yyyy HH:mm:ss.nnn XXX");


		// 3. OffsetDateTime to (dd.mmm.yyyy HH:mm:ss.nnn XXX) format in String form
		String str = offsetDateTime.format(dateTimeFormatter);
		System.out.println("\nOffsetDateTime to (dd.mmm.yyyy HH:mm:ss.nnn XXX) format :- \n"
				+ str);
	}
}

Output:

Current System Date/time is :- 
2022-08-16T19:26:14.770420+05:30
Exception in thread "main" java.lang.IllegalArgumentException: Too many pattern letters: m
	at java.base/java.time.format.DateTimeFormatterBuilder.parseField(DateTimeFormatterBuilder.java:2020)
	at java.base/java.time.format.DateTimeFormatterBuilder.parsePattern(DateTimeFormatterBuilder.java:1804)
	at java.base/java.time.format.DateTimeFormatterBuilder.appendPattern(DateTimeFormatterBuilder.java:1772)
	at java.base/java.time.format.DateTimeFormatter.ofPattern(DateTimeFormatter.java:566)
	at in.bench.resources.java8.offsetdatetime.examples.FormatOffsetDateTimeException
.main(FormatOffsetDateTimeException.java:18)

Related Articles:

References:

Happy Coding !!
Happy Learning !!

Java 8 – How to convert OffsetDateTime in different Format Style ?
Java 8 – How to convert String to OffsetDateTime ?