2014-01-13 241 views
8

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

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

谢谢。

+0

使用 - 而不是。在dd.MM.yyyy – Saqib

+0

问题似乎与最后一部分...当它被删除,它的作品。也许德语中的“CET”有所不同? –

+0

对我来说工作很好..给我这个o/p ..星期四10月31日22:27:58 IST 2013 –

回答

9

在德语中,“中欧时间”是“MitteleuropäischeZeit”,所以如果您想使用Locale.GERMAN,请将CET更改为MEZ并且它可以正常工作。

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

对于一个给定的语言环境的所有法律时区的字符串列表,使用此:

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

来源:http://en.wikipedia.org/wiki/Central_European_Time –

+0

谢谢你的回答。我没有想到这一点,因为在德国的维基百科中,你也使用CET签名。 – user3190987

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

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

+0

http://docs.oracle.com/javase/6/docs/api/java/text/SimpleDateFormat.html –

+0

You are right.H指定(0-23)格式,其中h指定(1-12).I是运行两个格式程序并粘贴小的。我改变了张贴的答案。谢谢。 –