【问题标题】:LocalDate DateTimeFormatter problemsLocalDate DateTimeFormatter 问题
【发布时间】:2020-03-20 18:24:32
【问题描述】:

我已经阅读了手册,但我完全不知道为什么这段代码不起作用。

    // Date Entered must be valid
    DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("MM/dd/yyyy")
            .withResolverStyle(ResolverStyle.STRICT);

    try {
        String dateEntered = lossDateMonth + "/" + lossDateDay + "/" + lossDateYear; // Slash to match UI

        System.out.println(dateEntered);
        LocalDate dateParsed = LocalDate.parse(dateEntered, dateTimeFormatter);

println 语句打印:07/29/2015

最后一行抛出异常: java.time.format.DateTimeParseException:无法解析文本'07/29/2015':无法从 TemporalAccessor 获取 LocalDate:{YearOfEra=2015,DayOfMonth=29,MonthOfYear=7},java.time.format 类型的 ISO .解析

我阅读了这方面的手册,上面说如果您尝试解决一个不存在的日期,例如 9 月 31 日,就会发生这种情况。即使在错误中,解析器似乎也明白我在问 2015 年 7 月 29 日,那么我在这里做错了什么?

【问题讨论】:

    标签: java localdate


    【解决方案1】:

    将模式"MM/dd/yyyy" 替换为"MM/dd/uuuu"。看看DateTimeFormatterIsoChronology。问题是,当使用.withResolverStyle(ResolverStyle.STRICT) 时,格式化程序需要uuuu 提供的年份的唯一标识符,其中yyyy时代。这是为了严格验证这些值。唯一性在于 uuuu 可以为负数。

    查看hereherehere 了解相关帖子。

    【讨论】:

    • 感谢您的精彩解释!我还进行了编辑以删除与问题无关的代码。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-13
    • 2021-11-05
    • 2015-12-12
    • 1970-01-01
    相关资源
    最近更新 更多