Java SimpleDataFormat语法异常
我需要将输入日期格式更改为所需格式Java SimpleDataFormat语法异常,java,android,Java,Android,我需要将输入日期格式更改为所需格式 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 = par
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)
有人能帮我吗?因为此代码不起作用。请尝试以下代码:
SimpleDateFormat date_format = new SimpleDateFormat("yyyyMMMdd");
System.out.println(date_format.format(cal.getTime()));
它会起作用的。。如果不打印日志cat?出现什么错误?请尝试以下代码:
SimpleDateFormat date_format = new SimpleDateFormat("yyyyMMMdd");
System.out.println(date_format.format(cal.getTime()));
它会起作用的。。如果不打印日志cat?什么是错误?看来Android的
z
不接受XXX格式的时区(如“CET”)。(从中拉出。)
请尝试以下方法:
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));
输出为2012年11月2日22:58
注意:另外,我认为您的意思是hh
而不是hh
,因为您有PM
结果表明。(这使用了Java7的SimpleDataFormat
,但Android也应该支持RFC822时区(+0100
)
NB:另外,由于Android的
z
似乎接受全名(“太平洋标准时间”是他们给出的例子),您可以简单地指定“欧洲时间”而不是“CET”。Android的z
似乎不接受XXX格式的时区(如“CET”)。(从中拉出。)
请尝试以下方法:
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));
输出为2012年11月2日22:58
注意:另外,我认为您的意思是hh
而不是hh
,因为您有PM
结果表明。(这使用了Java7的SimpleDataFormat
,但Android也应该支持RFC822时区(+0100
)
NB:另外,Android的
z
似乎接受全名(“太平洋标准时间”就是他们给出的例子),你可以简单地指定“欧洲时间”而不是“CET”。首先我必须同意@Eric answer
你只需要从日期字符串中删除“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));
首先,我必须同意@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));
似乎没有任何错误。你们有吗?对我来说很好:谢谢,伙计们,但它仍然会给我错误,错误就在上面。什么是CET?你从哪里得到这个日期?@user997777检查我的答案它似乎不会抛出任何错误。你们有吗?对我来说很好:谢谢,伙计们,但它仍然会给我错误,错误就在上面。什么是CET?您从何处获得此日期?@user997777检查我的答案它会起作用的嘿,我将输入字符串更改为Sat,2012年11月3日上午6:29,但它仍然不起作用。@user997777在Android项目上运行上述确切代码时,我没有遇到任何问题。您在什么设备上运行此程序?Java编译器1.6和api 2.3.5i版本必须在emulator 4.1.2上试用,才能正常工作。我不明白,嘿,我将输入字符串更改为Sat,2012年11月3日上午6:29,但它仍然不能工作。@user997777在Android项目上运行上述代码时,我没有遇到任何问题。您在什么设备上运行此程序?Java编译器1.6和api 2.3.5i版本必须在emulator 4.1.2上试用,才能正常工作。我不明白你可能是说,我是白痴,但这不起作用。我复制了代码,尝试了这个字符串,但仍然不起作用。我可能犯了一些错误。我试着找到它们并为我添加正确的代码。你可能是说,我是白痴,但它不起作用。我复制了代码,尝试了这个字符串,但仍然不起作用。我可能犯了一些错误。我试图找到它们并为我添加正确的代码。