Java 8 – How to convert String to OffsetDateTime ?

In this article, we will learn how to convert String to an OffsetDateTime using different date/time formats in Java 1.8 version

Q) What is the need of converting String to an OffsetDateTime ?

  • Generally, whenever we receive any data from web application then it is passed in the form of String
  • But for further processing we need to convert String to an OffsetDateTime
  • This article explains about String to OffsetDateTime conversion in different formats

Read also,

1. String to OffsetDateTime conversion:

We will use below formats to convert String to OffsetDateTime,

  1. yyyy-MM-ddTHH:mm:ss.nnn+/-HH:mm (default)
  2. dd-MM-yyyy HH:mm:ss.nnn VV
  3. dd-MM-yyyy hh:mm:ss.nnn a VV
  4. dd.MM.yyyy HH:mm:ss VV
  5. dd-MMM-yyyy hh:mm:ss a VV
  6. E dd/MMMM/yyyy HH:mm VV
  7. EEEE MMMM dd, yyyy hh:mm a VV

Note: for creating above formats we need DateTimeFormatter

2. Convert String to OffsetDateTime examples:

2.1 Convert String in default (yyyy-MM-ddTHH:mm:ss.nnn+/-HH:mm) format to OffsetDateTime :

  • This example converts String in default ISO_OFFSET_DATE_TIME format to an OffsetDateTime

ConvertStringToOffsetDateTime1.java

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

import java.time.OffsetDateTime;

public class ConvertStringToOffsetDateTime1 {

	public static void main(String[] args) {

		// 1. string
		String strOffsetDateTime = "2017-05-29T19:07:34.190912345+05:30";


		// 2. parse date/time in String to default OffsetDateTime format
		OffsetDateTime offsetDateTime = OffsetDateTime.parse(strOffsetDateTime);


		// 3. print to console
		System.out.println("Original String :- \n" + strOffsetDateTime);
		System.out.print("\nString in default "
				+ "(yyyy-MM-ddTHH:mm:ss.nnn+/-HH:mm) format to OffsetDateTime :- \n"
				+ offsetDateTime);
	}
}

Output:

Original String :- 
2017-05-29T19:07:34.190912345+05:30

String in default (yyyy-MM-ddTHH:mm:ss.nnn+/-HH:mm) format to OffsetDateTime :- 
2017-05-29T19:07:34.190912345+05:30

2.2 Convert String in (dd-MM-yyyy HH:mm:ss.nnn VV) format to OffsetDateTime :

  • This example converts String in (dd-MM-yyyy HH:mm:ss.nnn VV) format to an OffsetDateTime

ConvertStringToOffsetDateTime2.java

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

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

public class ConvertStringToOffsetDateTime2 {

	public static void main(String[] args) {

		// 1. string
		String strOffsetDateTime = "29-06-2017 19:07:34.190912345 +04:00";


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


		// 2. parse date/time in String to default OffsetDateTime format
		OffsetDateTime offsetDateTime = OffsetDateTime
				.parse(strOffsetDateTime, dateTimeFormatter);


		// 3. print to console
		System.out.println("Original String :- \n" + strOffsetDateTime);
		System.out.print("\nString in "
				+ "(dd-MM-yyyy HH:mm:ss.nnn VV) format to OffsetDateTime :- \n"
				+ offsetDateTime);
	}
}

Output:

Original String :- 
29-06-2017 19:07:34.190912345 +04:00

String in (dd-MM-yyyy HH:mm:ss.nnn VV) format to OffsetDateTime :- 
2017-06-29T19:07:34.190912345+04:00

2.3 Convert String in (dd-MM-yyyy hh:mm:ss.nnn a VV) format to OffsetDateTime :

  • This example converts String in (dd-MM-yyyy hh:mm:ss.nnn a VV) format to an OffsetDateTime

ConvertStringToOffsetDateTime3.java

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

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

public class ConvertStringToOffsetDateTime3 {

	public static void main(String[] args) {

		// 1. string
		String strOffsetDateTime = "29-06-2017 07:07:34.190912345 pm +04:30";


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


		// 2. parse date/time in String to default OffsetDateTime format
		OffsetDateTime offsetDateTime = OffsetDateTime
				.parse(strOffsetDateTime, dateTimeFormatter);


		// 3. print to console
		System.out.println("Original String :- \n" + strOffsetDateTime);
		System.out.print("\nString in "
				+ "(dd-MM-yyyy hh:mm:ss.nnn a VV) format to OffsetDateTime :- \n"
				+ offsetDateTime);
	}
}

Output:

Original String :- 
29-06-2017 07:07:34.190912345 pm +04:30

String in (dd-MM-yyyy hh:mm:ss.nnn a VV) format to OffsetDateTime :- 
2017-06-29T19:07:34.190912345+04:30

2.4 Convert String in (dd.MM.yyyy HH:mm:ss VV) format to OffsetDateTime :

  • This example converts String in (dd.MM.yyyy HH:mm:ss VV) format to an OffsetDateTime

ConvertStringToOffsetDateTime4.java

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

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

public class ConvertStringToOffsetDateTime4 {

	public static void main(String[] args) {

		// 1. string
		String strOffsetDateTime = "29.06.2017 19:07:34 -09:30";


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


		// 2. parse date/time in String to default OffsetDateTime format
		OffsetDateTime offsetDateTime = OffsetDateTime
				.parse(strOffsetDateTime, dateTimeFormatter);


		// 3. print to console
		System.out.println("Original String :- \n" + strOffsetDateTime);
		System.out.print("\nString in "
				+ "(dd.MM.yyyy HH:mm:ss VV) format to OffsetDateTime :- \n"
				+ offsetDateTime);
	}
}

Output:

Original String :- 
29.06.2017 19:07:34 -09:30

String in (dd.MM.yyyy HH:mm:ss VV) format to OffsetDateTime :- 
2017-06-29T19:07:34-09:30

2.5 Convert String in (dd-MMM-yyyy hh:mm:ss a VV) format to OffsetDateTime :

  • This example converts String in (dd-MMM-yyyy hh:mm:ss a VV) format to an OffsetDateTime

ConvertStringToOffsetDateTime5.java

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

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

public class ConvertStringToOffsetDateTime5 {

	public static void main(String[] args) {

		// 1. string
		String strOffsetDateTime = "29-Jun-2017 09:07:34 pm -09:00";


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


		// 2. parse date/time in String to default OffsetDateTime format
		OffsetDateTime offsetDateTime = OffsetDateTime
				.parse(strOffsetDateTime, dateTimeFormatter);


		// 3. print to console
		System.out.println("Original String :- \n" + strOffsetDateTime);
		System.out.print("\nString in "
				+ "(dd-MMM-yyyy hh:mm:ss a VV) format to OffsetDateTime :- \n"
				+ offsetDateTime);
	}
}

Output:

Original String :- 
29-Jun-2017 09:07:34 pm -09:00

String in (dd-MMM-yyyy hh:mm:ss a VV) format to OffsetDateTime :- 
2017-06-29T21:07:34-09:00

2.6 Convert String in (E dd/MMMM/yyyy HH:mm VV) format to OffsetDateTime :

  • This example converts String in (E dd/MMMM/yyyy HH:mm VV) format to an OffsetDateTime

ConvertStringToOffsetDateTime6.java

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

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

public class ConvertStringToOffsetDateTime6 {

	public static void main(String[] args) {

		// 1. string
		String strOffsetDateTime = "Fri 28/June/2019 15:07 +02:00";


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


		// 2. parse date/time in String to default OffsetDateTime format
		OffsetDateTime offsetDateTime = OffsetDateTime
				.parse(strOffsetDateTime, dateTimeFormatter);


		// 3. print to console
		System.out.println("Original String :- \n" + strOffsetDateTime);
		System.out.print("\nString in "
				+ "(E dd/MMMM/yyyy HH:mm VV) format to OffsetDateTime :- \n"
				+ offsetDateTime);
	}
}

Output:

Original String :- 
Fri 28/June/2019 15:07 +02:00

String in (E dd/MMMM/yyyy HH:mm VV) format to OffsetDateTime :- 
2019-06-28T15:07+02:00

2.7 Convert String in (EEEE MMMM dd, yyyy hh:mm a VV) format to OffsetDateTime :

  • This example converts String in (EEEE MMMM dd, yyyy hh:mm a VV) format to an OffsetDateTime

ConvertStringToOffsetDateTime7.java

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

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

public class ConvertStringToOffsetDateTime7 {

	public static void main(String[] args) {

		// 1. string
		String strOffsetDateTime = "Sunday June 23, 2019 11:07 pm +02:30";


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


		// 2. parse date/time in String to default OffsetDateTime format
		OffsetDateTime offsetDateTime = OffsetDateTime
				.parse(strOffsetDateTime, dateTimeFormatter);


		// 3. print to console
		System.out.println("Original String :- \n" + strOffsetDateTime);
		System.out.print("\nString in "
				+ "(EEEE MMMM dd, yyyy hh:mm a VV) format to OffsetDateTime :- \n"
				+ offsetDateTime);
	}
}

Output:

Original String :- 
Sunday June 23, 2019 11:07 pm +02:30

String in (EEEE MMMM dd, yyyy hh:mm a VV) format to OffsetDateTime :- 
2019-06-23T23:07+02:30

3. DateTimeParseException:

  • If the specified String doesn’t match with the specified pattern/format then DateTimeParseException is thrown
  • Use below date/time notation,
    1. a – for am/pm marker
    2. z – regional time-zone like IST or PST or CET
    3. XXX – for offset from GMT/UTC
    4. ss – seconds
    5. mm – minutes
    6. hh – 12-hour format
    7. HH – 24 hour format
    8. y/yyyy– year with all 4 digits
    9. yy – year with last 2 digits
    10. MM – month in numbers
    11. MMM – month in words in short form
    12. MMMM – month in words in full form
    13. dd – date
    14. E/EEE – day of week in short form
    15. EEEE – day of week in full form

StringToZonedDateTimeConversion.java

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

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

public class StringToOffsetDateTimeConversion {

	public static void main(String[] args) {

		// 1. string
		String strOffsetDateTime = "29-06-2017 19:07:34.190912345 +05:30";


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


		// 2. parse date/time in String to default OffsetDateTime format
		OffsetDateTime offsetDateTime = OffsetDateTime
				.parse(strOffsetDateTime, dateTimeFormatter);


		// 3. print to console
		System.out.println("Original String :- \n" + strOffsetDateTime);
		System.out.print("\nString in "
				+ "(dd-MM-yyyy HH:mm:ss.nnn VV) format to OffsetDateTime :- \n"
				+ offsetDateTime);
	}
}

Output:

Exception in thread "main" java.time.format.DateTimeParseException: 
Text '29-06-2017 19:07:34.190912345 +05:30' could not be parsed at index 3
	at java.base/java.time.format.DateTimeFormatter.parseResolved0(DateTimeFormatter.java:2052)
	at java.base/java.time.format.DateTimeFormatter.parse(DateTimeFormatter.java:1954)
	at java.base/java.time.OffsetDateTime.parse(OffsetDateTime.java:404)
	at in.bench.resources.java8.offsetdatetime.examples.StringToOffsetDateTimeConversiont
.main(StringToOffsetDateTimeConversion.java:21)

Related Articles:

References:

Happy Coding !!
Happy Learning !!

Java 8 – How to convert OffsetDateTime in different formats ?
Java 8 – How to parse OffsetDateTime in String form ?