Unable to parse date String to Date

2020-04-03 04:11发布

im want to parse a date String to a Date. I was looking in some other questions, but I didn't find an answer.

String mail_delivered = "31.10.2013 17:57:58 CET";

try {
    DateFormat df = new SimpleDateFormat("dd.MM.yyyy HH:mm:ss z", Locale.GERMAN);
    Date result =  df.parse(mail_delivered);  
    System.out.println(result);
} catch (ParseException pe) {
    pe.printStackTrace();
}

The error message is java.text.ParseException: Unparseable date: "[31.10.2013 17:57:58 CET]" and I don't know what's wrong.

Can you help me please. Thanks in advance.


Edit: ok. i canged it to english, but i'have still the same problem. I wouldn't like to change the input, because it comes from a mail database. Any other ideas?

String mail_delivered = "31.10.2013 17:57:58 CET";

try {
    DateFormat df = new SimpleDateFormat("dd.MM.yyyy HH:mm:ss z", Locale.ENGLISH);
    Date result =  df.parse(mail_delivered);  
    System.out.println(result);
} catch (ParseException pe) {
    pe.printStackTrace();
}

I found the problem. I was blind. The Sting from the Database was [31.10.2013 17:57:58 CET], not 31.10.2013 17:57:58 CET

Thank you.

标签: java date time
2条回答
Fickle 薄情
2楼-- · 2020-04-03 05:05

In German, "Central European Time" is "Mitteleuropäische Zeit", so if you want to use Locale.GERMAN, change CET to MEZ and it works.

String mail_delivered = "31.10.2013 17:57:58 MEZ";

For a list of all the legal time zone strings for a given locale, use this:

DateFormatSymbols.getInstance(Locale.GERMAN).getZoneStrings()
查看更多
▲ chillily
3楼-- · 2020-04-03 05:06

Try This:

public static void main(String[] args)throws Exception {
        // TODO Auto-generated method stub
       //Middle European Time (MET or MEZ-German)
        String mail_delivered = "31.10.2013 17:57:58 MET";
        try {
            SimpleDateFormat df= new SimpleDateFormat("dd.MM.yyyy HH:mm:ss z",Locale.GERMAN);
            Date result =  df.parse(mail_delivered);  
            System.out.println(result);
        } catch (ParseException pe) {
            pe.printStackTrace();
        }
    }

Output :- Thu Oct 31 22:27:58 IST 2013

查看更多
登录 后发表回答