In this short post, we are going to discuss how to format LocalDateTime in Java 8.
Format LocalDateTime in Java 8
Java 8 brought a number of new features and one of the important features was the Java 8 Date Time. This new API is based on the JSR 310. converting Date and Time into a different format is a very common day to day requirement. In this post, we will discuss the following two important points
- Format LocalDateTime in Java 8.
- Convert String to LocalDateTime.
1. DateTimeFormatter
To format LocalDateTime
, use DateTimeFormatter
available in the new time API.
package com.javadevjournal;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
public class FormatDateTimeExample {
private static final String DATE_FORMATTER= "yyyy-MM-dd HH:mm:ss";
public static void main(String[] args) {
LocalDateTime localDateTime = LocalDateTime.now(); //get current date time
System.out.println("Current Time " + localDateTime);
DateTimeFormatter formatter = DateTimeFormatter.ofPattern(DATE_FORMATTER);
String formatDateTime = localDateTime.format(formatter);
System.out.println("Formatted Time :" +formatDateTime);
}
}
Here is the output of the program:
Current Time 2018-11-12T21:19:52.642
Formatted Time :2018-11-12 21:19:52
2. String to LocaDateTime
To convert String to LocaDateTime
, use the static parse()
method available with LocalDateTime
class. This method takes 2 inputs
- A string input – the date which needs formatting.
- The
DateTimeFormatter
– To specify the date/time pattern or format.
Let’s take a look at the following example
package com.javadevjournal;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
public class CommonTest {
private static final DateTimeFormatter FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm");
public static void main(String[] args) {
String dateTime = "2020-12-11 17:30";
LocalDateTime formatDateTime = LocalDateTime.parse(dateTime, FORMATTER);
System.out.println("Parsed Date : " + formatDateTime);
}
}
Here is the output of the program:
<strong>Parsed Date</strong> : 2020-12-11T17:30
DateTimeFormatter
is immutable and thread-safe, and thus the recommended approach is to store it in a static constant where possible
In case you like to use this predefined format, you can skip creating the DateTimeFormatter
and can use the built-in formatter.
package com.javadevjournal;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
public class BuiltInFormatterExample {
public static void main(String[] args) {
String dateTime = "2018-09-25T10:13:14.743";
LocalDateTime localDateTime = LocalDateTime.parse(dateTime, DateTimeFormatter.ISO_DATE_TIME);
System.out.println("ISO Date Time is "+localDateTime);
}
}
3. Parsing String with ISO-8601 Format
If the String is ISO-8601 Format, we don’t need to specify the pattern while using the LocalDateTime.parse()
method. The LocaDateTime.parse()
method will automatically use the DateTimeFormatter.ISO_LOCAL_DATE_TIME
as the default formatter.
public static void main(String[] args) {
String dateTime = "2020-12-11T17:30";
LocalDateTime formatDateTime = LocalDateTime.parse(dateTime);
System.out.println("Parsed Date : " + formatDateTime);
}
Summary
In this quick post, we got an understanding of how to format LocalDateTime in Java 8. We learned how to format LocalDateTime object and what are the options to parse string date back into the LocalDateTime object.