ParseException:Java 中不可解析的日期

Eri*_*yan 1 java parsing java-time

我需要将字符串(日期格式)转换为时间戳。

首先,我就是这样做的。

private Timestamp dateConverter(String date) {
    Timestamp timestamp = null;
    SimpleDateFormat dateFormat = new SimpleDateFormat("dd MMM yyyy HH:mm");
    Date parsedDate = null;
    try {
        parsedDate = dateFormat.parse(date);
        timestamp = new java.sql.Timestamp(parsedDate.getTime());
    } catch (ParseException e) {
        e.printStackTrace();
    }
    return timestamp;
}
Run Code Online (Sandbox Code Playgroud)

结果是: ParseException: Unparseable date: "16 Jan 2020 11:02"

我用另一种方式试过:

private Timestamp dateConverter(String date) {
    DateTimeFormatter f = DateTimeFormatter.ofPattern("dd MMM yyyy HH:mm");
    LocalDateTime ldt = LocalDateTime.parse(date , f);

    return Timestamp.valueOf(ldt);
}
Run Code Online (Sandbox Code Playgroud)

此时我有内部服务器错误 DateTimeParseException: Text '16 Jan 2020 11:02' could not be parsed at index 3

YCF*_*F_L 6

你的模式不知道你的月份是什么语言,英语,法语,阿拉伯语,俄语,普通话......,要解决这个问题,你必须Locale像这样使用来帮助格式化程序:

DateTimeFormatter f = DateTimeFormatter.ofPattern("dd MMM yyyy HH:mm")
                .withLocale(new Locale("us")); 
LocalDateTime ldt = LocalDateTime.parse("16 Jan 2020 11:02" , f); // 2020-01-16T11:02
Run Code Online (Sandbox Code Playgroud)