我想将日期字符串解析为日期。我正在寻找其他一些问题,但我没有找到答案。
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 :(得分: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