In this article, you’ll find several examples demonstrating how to convert a date represented as a String to a Date, LocalDate, LocalDateTime, ZonedDateTime, or LocalTime instance in Java.
How to convert a String to Date in Java using SimpleDateFormat
Dates are represented as Strings by using some patterns and symbols. Java’s SimpleDateFormat class uses the following patterns and symbols for parsing a String to Date.
Let’s see an example:
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class SimpleDateFormatExample {
public static void main(String[] args) {
SimpleDateFormat dateFormatter = new SimpleDateFormat("yyyy-MM-dd");
String dateStr = "2020-01-31";
try {
// Parsing a String to Date
Date date = dateFormatter.parse(dateStr);
System.out.println(date);
} catch (ParseException e) {
e.printStackTrace();
}
}
}
Here is another example in which we parse a more complex date time representation:
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class SimpleDateFormatExample {
public static void main(String[] args) {
SimpleDateFormat dateTimeFormatter = new SimpleDateFormat("E, MMM dd yyyy, hh:mm:ss a");
String dateTimeStr = "Fri, Jan 31 2020, 10:30:45 PM";
try {
// Parse the String representation of date and time to Date
Date date = dateTimeFormatter.parse(dateTimeStr);
System.out.println(date);
} catch (ParseException e) {
e.printStackTrace();
}
}
}
Convert/Parse a String to LocalDate
We can also use the DateTime API introduced in Java 8 to convert a String to an instance of various DateTime classes like LocalDate, LocalTime, LocalDateTime, ZonedDateTime etc.
The DateTime API has a DateTimeFormatter class that can be used to define the date time format and parse the String according to the specified date time format. The DateTimeFormatter class uses the following patterns and symbols:
Let’s see an example of parsing a String to LocalDate:
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
public class LocalDateParseExample {
public static void main(String[] args) {
// Parse a String in ISO Date format (yyyy-MM-dd) to LocalDate
LocalDate date1 = LocalDate.parse("2020-02-28");
System.out.println(date1);
// Parse a String in a custom date format to LocalDate using DateTimeFormatter
DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern("dd/MM/yyyy");
LocalDate date2 = LocalDate.parse("28/02/2020", dateFormatter);
System.out.println(date2);
// Parse a String in a custom date-time format to LocalDate using DateTimeFormatter
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("E, MMM dd yyyy, hh:mm:ss a");
LocalDate date3 = LocalDate.parse("Fri, Feb 14 2020, 10:20:50 PM", dateTimeFormatter);
System.out.println(date3);
}
}
Convert/Parse a String to LocalDateTime
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
public class LocalDateTimeParseExample {
public static void main(String[] args) {
// Parse a String in ISO DateTime format (yyyy-MM-ddTHH:mm:ss) to LocalDateTime
LocalDateTime dateTime1 = LocalDateTime.parse("2020-01-31T10:15:30");
System.out.println(dateTime1);
// Parse a String in a custom date format to LocalDate using DateTimeFormatter
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("MMM dd yyyy, HH:mm");
LocalDateTime dateTime2 = LocalDateTime.parse("Jan 11 2020, 10:30", dateTimeFormatter);
System.out.println(dateTime2);
// Parse a String in a custom DateTime format to LocalDateTime using DateTimeFormatter
DateTimeFormatter descriptiveDateTimeFormatter = DateTimeFormatter.ofPattern("E, MMM dd yyyy, hh:mm:ss a");
LocalDateTime dateTime3 = LocalDateTime.parse("Fri, Feb 14 2020, 10:20:50 PM", descriptiveDateTimeFormatter);
System.out.println(dateTime3);
}
}
Convert/Parse a String to LocalTime
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;
public class LocalTimeParseExample {
public static void main(String[] args) {
// Parse a String in ISO Time format (HH:mm:ss) to LocalDate
LocalTime time1 = LocalTime.parse("12:30:50");
System.out.println(time1);
// Parse a String in a custom date format to LocalTime using DateTimeFormatter
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("dd/MM/yyyy HH:mm:ss");
LocalTime time2 = LocalTime.parse("28/02/2020 16:45:30", dateTimeFormatter);
System.out.println(time2);
}
}
Convert/Parse a String to ZonedDateTime
import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;
public class ZonedDateTimeParseExample {
public static void main(String[] args) {
// Parse a String in ISO DateTime format to ZonedDateTime
ZonedDateTime dateTime1 = ZonedDateTime.parse("2020-01-31T10:15:30+01:00[Europe/Paris]");
System.out.println(dateTime1);
// Parse a String in a custom date time format to ZonedDateTime using DateTimeFormatter
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("MMM dd yyyy, HH:mm (VV)");
ZonedDateTime dateTime2 = ZonedDateTime.parse("Jan 11 2020, 10:30 (America/Los_Angeles)", dateTimeFormatter);
System.out.println(dateTime2);
}
}