ParseException when parsing 3 character abbreviated month using SimpleDateFormat

半世苍凉 提交于 2019-11-28 14:16:25

问题


Here is my code,

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

I am getting below exception

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

What's to be used to parse milliseconds?


回答1:


The pattern should be MMM because there are three characters in the month.

You should also prefer java.time classes to the ones you're currently using if you're on Java 8 or above:

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);



回答2:


Use this pattern: dd-MMM-yyyy HH:mm:ss




回答3:


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

OR change it to

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



回答4:


you are using dd-MM-yyyy HH:mm:ss, so parsable is

16-05-2018 09:30:22

and if you want 16-MAY-2018 09:30:22 then use

dd-MMM-yyyy HH:mm:ss



回答5:


"16-MAY-2018 09:30:22" is not parsable with that time format. If you want to parse that you have to change date format to "dd-MMM-yyyy HH:mm:ss". The double M is only for numbered months (so should be 05 for May).

Check the SimpleDateFormat javadoc for more details: here



来源:https://stackoverflow.com/questions/50149765/parseexception-when-parsing-3-character-abbreviated-month-using-simpledateformat

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!