我有一个日期时间(字符串),格式如下:2/19/2015 5:25:35 p.m
,我想用以下日期格式转换它:Thu Feb 19 5:25:35 p.m. CET 2015
我尝试了以下代码:
String sDatePrecedenteExecution = "19/02/2015 17:30:29";
SimpleDateFormat format = new SimpleDateFormat ("ddd d mmm yyyy HH: mm: ss");
Date date = format.parse (sDatePrecedenteExecution)
但我收到以下错误:
java.text.ParseException: unparseable Date: "2/19/2015 5:30:29 p.m."
Has java.text.DateFormat.parse (DateFormat.java:337)
答案 0 :(得分:3)
您目前正在使用"输出"格式来读取您的传入日期字符串(2/19/2015 5:25:35 p.m
),这就是您看到错误的原因。
您需要指定第二种格式来解析传入的日期字符串,并使用该格式进行解析。它应该是这样的:
SimpleDateFormat inFormat = new SimpleDateFormat ("dd/MM/yyyy HH:mm:ss")
Date date = inFormat.parse(sDatePrecedenteExecution)
请注意,您的输出格式中也存在错误 - m
表示分钟,您需要MMM
,这是几个月。 Have a look at the docs.
答案 1 :(得分:2)
您的SimpleDateFormat与您输入的格式不匹配。他们应该反映同样的事情。
试试此代码
String parseDate = ""19/02/2015 17:30:29";
SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss");
Date parsedDate = dateFormat.parse(parseDate);
答案 2 :(得分:1)
您需要将代码更改为......
String sDatePrecedenteExecution = "19/02/2015 17:30:29";
SimpleDateFormat format = new SimpleDateFormat ("dd/mm/yyyy HH:mm:ss");
try {
Date date = format.parse (sDatePrecedenteExecution);
System.out.println(date);
format = new SimpleDateFormat ("ddd d mmm yyyy HH: mm: ss");
String str = format.format(date);
System.out.println(str);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
答案 3 :(得分:0)
尝试这种模式:
SimpleDateFormat format = new SimpleDateFormat ("dd mm yyyy HH:mm:ss");
你犯了错误:"ddd d mmm yyyy HH: mm: ss"
答案 4 :(得分:0)
使用此模式" dd / M / yyyy HH:mm:ss"相反&阅读documentation
SimpleDateFormat format = new SimpleDateFormat ("dd/M/yyyy HH:mm:ss");
String sDatePrecedenteExecution = "19/02/2015 17:30:29";
try{date =format.parse (sDatePrecedenteExecution);
}catch(Exception ex){//deal with it here}
System.out.println(date.toString()); //Thu Feb 19 17:30:29 UTC 2015