Java8 DateTimeFormatter解析具有两位数和两位数日期的日期

dre*_*nda 5 java java-8 java-time

我DateTimeFormatter用来解析日期:

private final DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd/MM/yyyy");
LocalDate.parse("05/12/2015", parser); // it's ok
LocalDate.parse("5/12/2015", parser); // Exception
Run Code Online (Sandbox Code Playgroud)

不幸的是,它无法正确解析带有单日数字的日期,例如"5/12/2015"。

我看了一些其他的岗位作为这个,但提出的解决方案并不为我工作。我需要一种可以解析具有一位或两位数日期的日期的方法。

Jon*_*eet 9

只需使用d代替dd-仍允许前导0,但不需要它。我怀疑您也想在几个月内做同样的事情-拥有“ 1或2位数”天而不是几个月就很奇怪了...

import java.time.*;
import java.time.format.*;

public class Test {
    public static void main(String[] args) throws Exception {
        DateTimeFormatter parser = DateTimeFormatter.ofPattern("d/M/yyyy");
        System.out.println(LocalDate.parse("05/1/2015", parser));
        System.out.println(LocalDate.parse("05/01/2015", parser));
        System.out.println(LocalDate.parse("05/12/2015", parser));
        System.out.println(LocalDate.parse("5/12/2015", parser));
    }
}
Run Code Online (Sandbox Code Playgroud)