Warm tip: This article is reproduced from stackoverflow.com, please click
java simpledateformat

Java unparsable date SimpleDateFormat

发布于 2020-03-28 23:13:09

I have a date that looks like that:

Sun Dec 29 00:24:09 CET 2019

I have a little utility method that parses a string date from a format to another:

public String formatDate(String date, String fromFormat, String toFormat) throws Exception {
        SimpleDateFormat from = new SimpleDateFormat(fromFormat);
        SimpleDateFormat to = new SimpleDateFormat(toFormat);
        return to.format(from.parse(date));
    }

However, with above date format, I do not find the correct date pattern to indicate to my method. According to SimpleDateFormat patterns documentation, it should be (if I am not mistaken), the following (for Sun Dec 29 00:24:09 CET 2019):

"E M d HH:mm:ss z yyyy"

However, it throws the following exception:

java.text.ParseException: Unparseable date: "Sun Dec 29 00:24:09 CET 2019"
        at java.text.DateFormat.parse(DateFormat.java:366)
        at com.aptar.simulator.Utils.formatDate(Utils.java:60)

The method is called like this:

formatDate(exDate, "E M d HH:mm:ss z yyyy", "dd-MM-yyyy HH:mm:ss");

Where

exDate = "Sun Dec 29 00:24:09 CET 2019"
Questioner
Florian Castelain
Viewed
19
Smile 2020-01-31 17:22

Date format should be

EEE MMM dd HH:mm:ss z yyyy

Your code works fine using this format.

using java.time API

LocalDate.parse(datestr, DateTimeFormatter.ofPattern("EEE MMM dd HH:mm:ss z yyyy")).format("TO DATE PATTERN");

Further details at Using java.time package to format date