我需要将输入日期格式更改为我想要的格式。
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)
可以帮我吗?因为此代码不起作用。
答案 0 :(得分:1)
Android z
似乎不接受XXX格式的时区(例如“CET”)。 (从the SimpleDateFormat
documentation拉出来。)
请改为尝试:
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
。
显示结果here。 (这使用Java7的SimpleDateFormat
,但Android也应支持RFC 822时区(+0100
)。)
NB :此外,由于Android z
接受全名(“太平洋标准时间”是他们提供的示例),您可以简单地指定“Centural European Time”而不是“CET”。
答案 1 :(得分:0)
尝试以下代码:
SimpleDateFormat date_format = new SimpleDateFormat("yyyyMMMdd");
System.out.println(date_format.format(cal.getTime()));
它会工作..如果不打印日志猫?什么错误来了?
答案 2 :(得分:0)
首先,我必须同意@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));