# How to convert string to LocalDateTime in Java

By Atta Ur Rehman Shah (https://attacomsian.com/about). Published Dec 30, 2019, updated Oct 14, 2022. Topics: Java.
Canonical URL: https://attacomsian.com/blog/java-convert-string-to-localdatetime

> A quick tutorial to learn how to convert a string to an instance of LocalDateTime in Java.

The `LocalDateTime` class, introduced in [Java 8 new date and time API](https://attacomsian.com/blog/java-new-date-time-api),  **represents both local date and time without timezone** in ISO-8601 format (`yyyy-MM-ddTHH:mm:ss`).

`LocalDateTime` is the most commonly used class from Java 8 new data and time API to handle dates and times together. It provides a wide range of utility methods for different types of date and time operations.

In this article, you'll learn how to **convert a date-time string to an instance of `LocalDateTime`** in Java 8 and higher. 

The new date and time API provides the `parse()` method for parsing a string to date. By default, this method accepts a date-time string in ISO-8601 format and parses it directly to an instance of `LocalDateTime`. 

The following example demonstrates how you can convert the **default ISO-8601 formatted string**  to `LocalDateTime` using the `parse()` method:

```java
// ISO-8601 formatted string
String str = "2009-12-02T11:25:25";

// parse string to `LocalDateTime`
LocalDateTime dateTime = LocalDateTime.parse(str);

// print `LocalDateTime`
System.out.println("Parsed LocalDateTime: " + dateTime);
```

Here is what the output looks like:

```bash
Parsed LocalDateTime: 2009-12-02T11:25:25
```

To **parse a date-time string that is not in ISO-8601 format**, you need to pass an instance of `DateTimeFormatter` to explicitly specify the date-time string pattern as shown below:

```java
// parse custom date-time strings
LocalDateTime dateTime = LocalDateTime.parse("Jan 15, 2019 20:12",
        DateTimeFormatter.ofPattern("MMM dd, yyyy HH:mm"));
LocalDateTime dateTime2 = LocalDateTime.parse("09/25/2017 12:55 PM",
        DateTimeFormatter.ofPattern("MM/dd/yyyy hh:mm a"));
LocalDateTime localDate3 = LocalDateTime.parse("02-August-1989 11:40:12.450",
        DateTimeFormatter.ofPattern("dd-MMMM-yyyy HH:mm:ss.SSS"));

// print `LocalDate` instances
System.out.println(dateTime);
System.out.println(dateTime2);
System.out.println(localDate3);
```

The above code snippet will print the following on the console:

```bash
2019-01-15T20:12
2017-09-25T12:55
1989-08-02T11:40:12.450
```

Check out [how to convert a string to date in Java](https://attacomsian.com/blog/java-convert-string-to-date) guide for more string-to-date conversion examples.
