Search code examples
javadatelocaldatetime

Convert String to LocalDateTime in Java


I have this String

Fri, 07 Aug 2020 18:00:00 +0000

And I need to convert it to a LocalDateTime

I tryed several ways:

create a DateTimeFormatter and parse the String

String dateString = "Fri, 07 Aug 2020 18:00:00 +0000";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("E, dd MMM yyyy HH:mm:ss", Locale.getDefault());
LocalDateTime parsedDate = LocalDateTime.parse(publishedString, formatter);

Convert it to a Date with a SimpleDateFormat and then convert the resultDate to a LocalDateTime

String dateString = "Fri, 07 Aug 2020 18:00:00 +0000";
SimpleDateFormat dateFormatter = new SimpleDateFormat("E, dd MMM yyyy HH:mm:ss Z");
Date date = dateFormatter.parse(publishedString);
LocalDateTime localDateTime = date.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();

both solution gives me the same exception:

java.time.format.DateTimeParseException: Text 'Fri, 07 Aug 2020 18:00:00 +0000' could not be parsed 
at index 0 at java.base/java.time.format.DateTimeFormatter.parseResolved0(DateTimeFormatter.java:2046)

How can I convert that String?


Solution

  • I'd say use Locale.ROOT and don't forget the Z in the DateTimeFormatter class

    String dateString = "Fri, 07 Aug 2020 18:00:00 +0000";
    DateTimeFormatter formatter = DateTimeFormatter.ofPattern("E, dd MMM yyyy HH:mm:ss Z", Locale.ROOT);
    LocalDateTime parsedDate = LocalDateTime.parse(dateString, formatter);