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

标签 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但建议的解决方案对我不起作用。 我需要一种方法来解析可以有一位数或两位数天的日期。

最佳答案

只需使用 d 而不是 dd - 仍然允许前导 0,但不需要它。我怀疑你也想在几个月内做同样的事情 - 有“一位或两位数”的日子而不是几个月会很奇怪......

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

关于Java8 DateTimeFormatter 解析具有个位数和双位数日期的日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33666456/

相关文章:

java - 检查异常是否违反开闭原则?

java - 循环访问一组对象

Java 8 流、groupBy 和方法调用

java - LocalDate:等于与 isEqual

java - 断电后我无法再编译应用程序

java - 在 Java 中使用临时 keystore 的 2 种 SSL 方式

exception - Java 8流-在迭代过程中引发异常

Java 8 方法表达式给出编译错误

java - jackson :使用时区 ID 解析 ZonedDateTime