Simpledateformat ParseException

我需要将输入日期格式更改为我想要的格式。

String time = "Fri, 02 Nov 2012 11:58 pm CET"; SimpleDateFormat displayFormat = new SimpleDateFormat("dd.MM.yyyy, HH:mm"); SimpleDateFormat parseFormat = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm aa z"); Date date = parseFormat.parse(time); System.out.println("output is " + displayFormat.format(date)); 

它给了我这个错误

 java.text.ParseException: Unparseable date: "Fri, 02 Nov 2012 11:58 pm CET" at java.text.DateFormat.parse(Unknown Source) at Main.main(Main.java:10) 

可以帮我吗? 因为这段代码不起作用。

看来Android的z不接受XXX格式的时区(例如“CET”)。 (从SimpleDateFormat文档中提取。)

试试这个:

 String time = "Fri, 02 Nov 2012 11:58 pm +0100"; // CET = +1hr = +0100 SimpleDateFormat parseFormat = new SimpleDateFormat("EEE, dd MMM yyyy hh:mm aa Z"); // Capital Z Date date = parseFormat.parse(time); SimpleDateFormat displayFormat = new SimpleDateFormat("dd.MM.yyyy, HH:mm"); System.out.println("output is " + displayFormat.format(date)); 

输出是02.11.2012,22:58

注意:另外,我认为你的意思是hh而不是HH ,因为你有PM

结果显示在此处 。 (这使用Java7的SimpleDateFormat ,但Android也应该支持RFC 822时区( +0100 )。)

注意 :另外,因为看起来Android的z接受全名(“太平洋标准时间”就是他们给出的例子),你可以简单地指定“Centural European Time”而不是“CET”。

试试下面的代码:

 SimpleDateFormat date_format = new SimpleDateFormat("yyyyMMMdd"); System.out.println(date_format.format(cal.getTime())); 

它会工作..如果不打印日志猫? 什么错误来了?

首先,我必须同意@Eric的回答。

您只需要从日期字符串中删除“CET”即可。

这是示例代码。 核实。

  String time = "Fri, 02 Nov 2012 11:58 pm CET"; time = time.replaceAll("CET", "").trim(); SimpleDateFormat displayFormat = new SimpleDateFormat("dd.MM.yyyy, HH:mm"); SimpleDateFormat parseFormat = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm aa"); Date date = null; try { date = parseFormat.parse(time); } catch (ParseException e) { // TODO Auto-generated catch block e.printStackTrace(); } System.out.println("output is " + displayFormat.format(date));