Java 8 – How to parse LocalDateTime in String form ?

In this article, we will learn how to parse LocalDateTime and java.util.Date in String form using LocalDateTime.parse() method provided in Java 1.8 version

1. Parse java.time.LocalDateTime :

  • Sometimes, we need to parse date/time passed in String-form to LocalDateTime, for that we can use LocalDateTime.parse() method which will return LocalDateTime in yyyy-MM-ddTHH:mm:ss.nnn format
  • There are 2 variants of LocalDateTime.parse() method –
    1. LocalDateTime.parse(CharSequence) – returns LocalDateTime in default yyyy-MM-ddTHH:mm:ss.nnn format
    2. LocalDateTime.parse(CharSequence, DateTimeFormatter) – this variant helps to customize LocalDateTime format using formatter
  • Both variants throws java.time.format.DateTimeParseException when,
    1. For the 1st variant, if the specified date/time in string-form isn’t in default formats as listed below,
      • yyyy-MM-ddTHH:mm:ss.nnn
      • yyyy-MM-ddTHH:mm:ss
      • yyyy-MM-ddTHH:mm
    2. For the 2nd variant, if specified date/time in string-form isn’t matching with custom pattern/format specified in the DateTimeFormatter
  • Finally, print LocalDateTime to the console for both variants

ParseLocalDateTime.java

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

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;

public class ParseLocalDateTime {

	public static void main(String[] args) {

		// 1. Office Joining date/time
		String officeJoiningDateTime = "2017-03-06T08:29:59.987654321";


		// 1.1 convert/parse to dateInString to LocalDateTime in default format
		LocalDateTime parsedOfficeJoiningDateTime = LocalDateTime.parse(officeJoiningDateTime);


		// 1.2 print to console - Office Joining date/time
		System.out.println("Original String is  = " + officeJoiningDateTime);
		System.out.println("Parsed Date/time is = " + parsedOfficeJoiningDateTime);



		// 2. Office Relieving date/time
		String officeRelievingDateTime = "29/06/2017 17:30:01.123456789";


		// 2.1 custom format
		DateTimeFormatter dateTimeFormatter = DateTimeFormatter
				.ofPattern("dd/MM/yyyy HH:mm:ss.nnn");


		// 2.2 convert/parse to dateInString to LocalDate in custom format
		LocalDateTime parsedOfficeRelievingDateTime = LocalDateTime
				.parse(officeRelievingDateTime, dateTimeFormatter);


		// 2.3 print to console - Office Relieving date/time
		System.out.println("\nOriginal String is  = " + officeRelievingDateTime);
		System.out.println("Parsed Date/time is = " + parsedOfficeRelievingDateTime);



		// 3. Session start date/time
		String sessionStartDateTime = "29-06-2017 11:29:45 am";


		// 3.1 custom format
		DateTimeFormatter dateTimeFormatter2 = DateTimeFormatter
				.ofPattern("dd-MM-yyyy HH:mm:ss a");


		// 3.2 convert/parse to dateInString to LocalDate in custom format
		LocalDateTime parsedSessionStartDateTime = LocalDateTime
				.parse(sessionStartDateTime, dateTimeFormatter2);


		// 2.3 print to console - Office Relieving date/time
		System.out.println("\nOriginal String is  = " + sessionStartDateTime);
		System.out.println("Parsed Date/time is = " + parsedSessionStartDateTime);



		// 4. Session end date/time
		String sessionEndDateTime = "29.06.2017 05:59 pm";


		// 3.1 custom format
		DateTimeFormatter dateTimeFormatter3 = DateTimeFormatter
				.ofPattern("dd.MM.yyyy hh:mm a");


		// 3.2 convert/parse to dateInString to LocalDate in custom format
		LocalDateTime parsedSessionEndDateTime = LocalDateTime
				.parse(sessionEndDateTime, dateTimeFormatter3);


		// 2.3 print to console - Office Relieving date/time
		System.out.println("\nOriginal String is  = " + sessionEndDateTime);
		System.out.print("Parsed Date/time is = " + parsedSessionEndDateTime);
	}
}

Output:

Original String is  = 2017-03-06T08:29:59.987654321
Parsed Date/time is = 2017-03-06T08:29:59.987654321

Original String is  = 29/06/2017 17:30:01.123456789
Parsed Date/time is = 2017-06-29T17:30:01.123456789

Original String is  = 29-06-2017 11:29:45 am
Parsed Date/time is = 2017-06-29T11:29:45

Original String is  = 29.06.2017 05:59 pm
Parsed Date/time is = 2017-06-29T17:59

2. Parse java.util.Date :

  • Default format for java.util.Date is E MMM dd HH:mm:ss zzz yyyy
  • Parsing Date in custom formats is simple using DateFormat & SimpleDateFormat classes as shown in the below example
  • Finally, print Date to the console for both default and custom formats

ParseDate.java

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

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;

public class ParseDate {

	public static void main(String[] args) {

		// 1. current date
		Date date = new Date();
		System.out.println("Current Date/Time in default format :- \n"
				+ date);


		// 2. format
		DateFormat dateFormat =  new SimpleDateFormat("dd-MM-yyyy HH:mm:ss");
		String str = dateFormat.format(date);
		System.out.print("\nFormatted Date/Time in (dd-MM-yyyy HH:mm:ss) format :- \n"
				+ str);
	}
}

Output:

Current Date/Time in default format :- 
Mon Aug 08 20:33:52 IST 2022

Formatted Date/Time in (dd-MM-yyyy HH:mm:ss) format :- 
08-08-2022 20:33:52

Related Articles:

References:

Happy Coding !!
Happy Learning !!

Java 8 – How to convert String to LocalDateTime ?
Java 8 – How to form LocalDateTime passing Second/Nano and ZoneOffset ?