为什么我不能在Java 8中正确解析这个英文日期?

时间:2014-04-09 17:49:07

标签: java date

我想执行一个简单的例子,用模式解析字符串到日期。

String input = "Sep 31 2013";
LocalDate localDate = LocalDate.parse(input,
                DateTimeFormatter.ofPattern("MMM d yyyy"));

抛出异常:

Exception in thread "main" java.time.format.DateTimeParseException: Text 'Sep 31 2013' could not be parsed at index 0
    at java.time.format.DateTimeFormatter.parseResolved0(Unknown Source)
    at java.time.format.DateTimeFormatter.parse(Unknown Source)
    at java.time.LocalDate.parse(Unknown Source)
    at lambda.DateTime.main(DateTime.java:78)

我使用java 8中的java.time包。

1 个答案:

答案 0 :(得分:7)

我假设你有一个非英语Locale。如果您想用英语解析,请使用相应的Locale

String input = "Sep 31 2013";
LocalDate localDate = LocalDate.parse(input, DateTimeFormatter
            .ofPattern("MMM d yyyy").withLocale(Locale.ENGLISH));

或任何其他英语Locale:美国,加拿大,英国等

或者,对于Localeru_RU,传递俄语日期字符串,即。其中Sep是俄语,以便可以正确解析