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