我正在尝试使用jsoup从网站获取日期,但是在解析字符串(西里尔字母)并将其转换为日期格式后,我得到了一个例外:

java.text.ParseException: Unparseable date: "1 апреля 2018"
at java.text.DateFormat.parse(DateFormat.java:366)
at ru.skilanov.io.jobsparser.HtmlParser.convertDate(HtmlParser.java:116)
at ru.skilanov.io.jobsparser.HtmlParser.getDate(HtmlParser.java:105)
at ru.skilanov.io.jobsparser.HtmlParser.createJob(HtmlParser.java:64)
at ru.skilanov.io.jobsparser.HtmlParser.getAllJobs(HtmlParser.java:53)
at ru.skilanov.io.jobsparser.HtmlParser.main(HtmlParser.java:45)


转换方式:

private Date convertDate(String date){
Calendar calendar = Calendar.getInstance();
String year = String.valueOf(calendar.get(Calendar.YEAR));
String str = String.format("%s %s", date, year);
DateFormat format = new SimpleDateFormat("d MMMM yyyy", new Locale("ru", "RU"));
try {
    return format.parse(str);
} catch (ParseException e) {
    e.printStackTrace();
}
return null;
}


日期解析方法:

private Date getDate(Element element){
String date = element.select(DATE_QUERY).text();
return convertDate(date);
}


更新已解决。

我通过拆分输入参数更改了covertDate方法:

    private Date convertDate(String date) {
    Calendar calendar = Calendar.getInstance();
    String year = String.valueOf(calendar.get(Calendar.YEAR));
    String str = String.format("%s %s %s", getDay(date), getMonth(date), year);
    DateFormat format = new SimpleDateFormat("d MMMM yyyy");
    try {
        return format.parse(str);
    } catch (ParseException e) {
        e.printStackTrace();
    }
    return null;
}


getDay方法:

    private String getDay(String date) {
    return date.split("[\\u00A0\\s]+")[0];
}


getMonth方法:

    private String getMonth(String date) {
    return date.split("[\\u00A0\\s]+")[1];
}

最佳答案


我通过拆分输入参数更改了setDate方法:

private Date convertDate(String date) {
Calendar calendar = Calendar.getInstance();
String year = String.valueOf(calendar.get(Calendar.YEAR));
String str = String.format("%s %s %s", getDay(date), getMonth(date), year);
DateFormat format = new SimpleDateFormat("d MMMM yyyy");
try {
    return format.parse(str);
} catch (ParseException e) {
    e.printStackTrace();
}
return null;

}
getDay方法:
private String getDay(String date) {
return date.split("[\\u00A0\\s]+")[0];

}
getMonth方法:
private String getMonth(String date) {
return date.split("[\\u00A0\\s]+")[1];

}

10-07 13:12
查看更多