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上试用,才能正常工作。我不明白你可能是说,我是白痴,但这不起作用。我复制了代码,尝试了这个字符串,但仍然不起作用。我可能犯了一些错误。我试着找到它们并为我添加正确的代码。你可能是说,我是白痴,但它不起作用。我复制了代码,尝试了这个字符串,但仍然不起作用。我可能犯了一些错误。我试图找到它们并为我添加正确的代码。