我正在尝试读取CSV文件,我需要解析某个日期值。 但是我收到了一个无法放置的DateTimeParseException。
我想读的字段是一个日期字段,如下所示:
08-May-2016
我使用的代码:
LocalDate date = LocalDate.parse(row[3], DateTimeFormatter.ofPattern("d-M-yy"));
其中row[3]
是我从CSV文件中读取的字段。
我得到的例外:Text '08-May-16' could not be parsed at index 3
我认为d-M-yy
应该能够读取一年中的单位数,两位数字和字母表示,这是错误的吗?
答案 0 :(得分:3)
此处的问题是,您在创建Locale
时未提供DateTimeFormatter
- 您需要使用支持该格式的Locale
:
System.out.println(LocalDate.parse("08-May-2016", DateTimeFormatter.ofPattern("dd-MMM-yyyy", Locale.ENGLISH)));
输出:
2016-05-08
这不起作用:
System.out.println(LocalDate.parse("08-May-2016", DateTimeFormatter.ofPattern("dd-LLL-yyyy", Locale.ENGLISH)));
输出:
Exception in thread "main" java.time.format.DateTimeParseException: Text '08-May-2016' could not be parsed at index 3
at java.time.format.DateTimeFormatter.parseResolved0(DateTimeFormatter.java:1949)
at java.time.format.DateTimeFormatter.parse(DateTimeFormatter.java:1851)
at java.time.LocalDate.parse(LocalDate.java:400)
答案 1 :(得分:1)
我认为d-M-yy应该能够读取一年中的单位数,两位数字和字母表示,这是错误的吗?
是。您的模式将正确解析表单1-5-16的日期,但不会解析2016年5月10日。试试dd-MMM-yyyy
。