Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Date format parse exception - "EEE MMM dd HH:mm:ss Z yyyy" [duplicate]

I got problem with date parse example date:

SimpleDateFormat parserSDF=new SimpleDateFormat("EEE MMM dd HH:mm:ss zzzz yyyy", Locale.getDefault());


parserSDF.parse("Wed Oct 16 00:00:00 CEST 2013");

got exception

Exacly I want parse this format date to yyyy-MM-dd I try:

SimpleDateFormat parserSDF = new SimpleDateFormat("yyyy-MM-dd", Locale.ENGLISH);
Date date = parserSDF.parse("Wed Oct 16 00:00:00 CEST 2013");

take : java.text.ParseException: Unparseable date: "Wed Oct 16 00:00:00 CEST 2013"


OK I change to and works :

SimpleDateFormat parserSDF = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzzz yyyy", Locale.ENGLISH);
Date date = parserSDF.parse("Wed Oct 16 00:00:00 CEST 2013");
like image 645
PDS Avatar asked Nov 08 '13 14:11

PDS


2 Answers

I'm going to assume that Locale.getDefault() for you is pl-PL since you seem to be in Poland.

English words in date strings therefore cause an unparseable date.

An appropriate Polish date String would be something like

"Wt paź 16 00:00:00 -0500 2013"

Otherwise, change your Locale to Locale.ENGLISH so that the SimpleDateFormat object can parse String dates with English words.

like image 98
Sotirios Delimanolis Avatar answered Sep 21 '22 15:09

Sotirios Delimanolis


Instead of using Locale.default that you and others often don't know which default, you can decide by using locale.ENGLISH because I see your string date is format in English. If you are at other countries, the format will be different.

Here is my example code:

public static void main(String[] args) {
    try {
        SimpleDateFormat parserSDF = new SimpleDateFormat("EEE MMM dd HH:mm:ss Z yyyy", Locale.ENGLISH);
        Date date = parserSDF.parse("Wed Oct 16 00:00:00 CEST 2013");
        System.out.println("date: " + date.toString());
    } catch (ParseException ex) {
        ex.printStackTrace();
    }
}

The result will be : date: Wed Oct 16 05:00:00 ICT 2013. Or you can decide which part of this date to be printed, by using its fields.

Hope this help :)

like image 22
hqt Avatar answered Sep 20 '22 15:09

hqt