无法将日期字符串解析为日期

时间:2014-01-13 16:40:37

标签: java date time

我想将日期字符串解析为日期。我正在寻找其他一些问题,但我没有找到答案。

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();
}

错误消息是java.text.ParseException:Unparseable date: "[31.10.2013 17:57:58 CET]",我不知道出了什么问题。

你能帮帮我吗? 提前谢谢。


编辑:好的。我把它变成英语,但我仍然是同样的问题。我不想改变输入,因为它来自邮件数据库。还有其他想法吗?

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();
}

我发现了问题。我是瞎子。来自数据库的Sting是[31.10.2013 17:57:58 CET],而不是31.10.2013 17:57:58 CET

谢谢。

2 个答案:

答案 0 :(得分:9)

在德语中,“中欧时间”是“MitteleuropäischeZeit”,因此如果您想使用Locale.GERMAN,请将CET更改为MEZ,这样就可以了。

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

有关给定语言环境的所有合法时区字符串的列表,请使用:

DateFormatSymbols.getInstance(Locale.GERMAN).getZoneStrings()

答案 1 :(得分:0)

试试这个:

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();
        }
    }

输出: - 2013年10月31日22:27:58 IST 2013