java.text.ParseException:不可解析的日期:";2012年1月19日星期四下午8:00”;

java.text.ParseException:不可解析的日期:";2012年1月19日星期四下午8:00”;,java,date,timestamp,Java,Date,Timestamp,我想解析一个日期。我的字符串日期是“Thu Jan 19 2012 08:00 PM”。我要分析的代码是: format = new SimpleDateFormat("EEE MMM dd yyyy hh:mm aaa"); this.settDate(new Timestamp((format.parse(sDate)).getTime())); 但是,它不起作用。我如何解析这个日期 完整的方法是: public void saveTask(int iDevice, String desc

我想解析一个日期。我的字符串日期是“Thu Jan 19 2012 08:00 PM”。我要分析的代码是:

format = new SimpleDateFormat("EEE MMM dd yyyy hh:mm aaa");
this.settDate(new Timestamp((format.parse(sDate)).getTime()));
但是,它不起作用。我如何解析这个日期

完整的方法是:

public void saveTask(int iDevice, String description, String sDate) throws ParseException {
    format = new SimpleDateFormat("EEE MMM dd yyyy hh:mm aaa");
    this.setiDeviceId(iDevice);
    this.setsDescription(description);
    this.settDate(new Timestamp((format.parse(sDate)).getTime()));
    DatabaseManager.save(this);
}
例外情况:

java.text.ParseException: Unparseable date: "Thu Jan 19 2012 01:00 AM"
调试图片:


谢谢

您的默认语言环境是什么?由于日期字符串是英文的,请尝试使用美国语言环境对其进行解析:

DateFormat format = new SimpleDateFormat("EEE MMM dd yyyy hh:mm a", Locale.US);

确保那个值真的被调用了。将断点放在该行上,并仔细检查实际值


正如您在这里看到的,代码工作得非常完美。

在本例中,请尝试设置类似于我们的语言环境:

SimpleDateFormat format = new SimpleDateFormat("EEE MMM dd yyyy hh:mm aaa",Locale.US);
format.parse("Thu Jan 19 2012 08:00 PM");

尝试下面的代码。。。测试和工作

    String dateStr = "Thu Jan 19 2012 01:00 PM";
    DateFormat readFormat = new SimpleDateFormat( "EEE MMM dd yyyy hh:mm aaa");

    DateFormat writeFormat = new SimpleDateFormat( "yyyy-MM-dd HH:mm:ss");
    Date date = null;
    try {
       date = readFormat.parse( dateStr );
    } catch ( ParseException e ) {
        e.printStackTrace();
    }

    String formattedDate = "";
    if( date != null ) {
    formattedDate = writeFormat.format( date );
    }

    System.out.println(formattedDate);
输出为
2012-01-19 13:00:00


干杯!!!很乐意帮忙

//确保字符串日期和日期格式模式相同; //例如,您有字符串date=“2018/07/10 10:00:00”


您是否尝试过
format=new SimpleDateFormat(“EEE-MMM-dd-yyyy-hh:mm-a”)你的代码对我来说很好。显示更多代码。您的格式很好,适合我,我得到:
Thu Jan 19 20:00:00 SAST 2012
您的错误是什么,它如何不“工作”?是的,我这样做。但它也不起作用。@Andrey是的,但Jose Hdez的默认区域设置可能不是美国或英国,所以如果他没有指定应该使用哪个区域设置,他会得到一个错误。
                            DateFormat format = new SimpleDateFormat( "yyyy/MM/dd HH:mm:ss");

                            // now makesure format has same pattern in this case ""yyyy/MM/dd HH:mm:ss"