使用SimpleDateFormat解析3个字符缩写月份时的ParseException

时间:2018-05-03 07:55:50

标签: java simpledateformat datetime-parsing parseexception

这是我的代码,

SimpleDateFormat format = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss");
Date dft  = (Date) format.parse("16-MAY-2018 09:30:22:000");

我正处于异常

之下
  

java.text.ParseException:Unparseable date:" 16-MAY-2018 09:30:22"

用于解析毫秒的内容是什么?

5 个答案:

答案 0 :(得分:3)

模式应为MMM,因为当月有三个字符。

如果您使用的是Java 8或以上版本,您还应该选择java.time课程,而不是您目前正在使用的课程:

DateTimeFormatter formatter = new DateTimeFormatterBuilder()
    .appendPattern("dd-MMM-yyyy")
    .appendLiteral(' ')
    .append(ISO_LOCAL_TIME)
    .toFormatter();

LocalDateTime timestamp = LocalDateTime.parse("16-May-2018 09:30:22", formatter);

答案 1 :(得分:0)

使用此模式:dd- MMM -yyyy HH:mm:ss

答案 2 :(得分:0)

" 16-MAY-2018 09:30:22"无法使用该时间格式进行分析。如果要解析必须将日期格式更改为" dd-MMM-yyyy HH:mm:ss"。双M仅适用于编号的月份(5月份应为05)。

检查SimpleDateFormat javadoc以获取更多详细信息:here

答案 3 :(得分:0)

Date dft  = (Date) format.parse("16-05-2018 09:30:22");

或将其更改为

SimpleDateFormat format = new SimpleDateFormat("dd-MMM-yyyy HH:mm:ss");

答案 4 :(得分:0)

你正在使用dd-MM-yyyy HH:mm:ss,所以可解析

16-05-2018 09:30:22

如果您想要16-MAY-2018 09:30:22那么请使用

dd-MMM-yyyy HH:mm:ss