Java8 DateTimeFormatter解析日期,包括单个数字和两位数日

时间:2015-11-12 07:43:17

标签: 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

不幸的是,它没有正确解析日期数字,例如"5/12/2015"

我读了一些其他帖子this,但建议的解决方案对我不起作用。 我需要一种方法来解析可能有一天或两位数的日期。

1 个答案:

答案 0 :(得分:7)

只需使用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));
    }
}