【问题标题】:Month Year In String to Local Date字符串中的月份年份到本地日期
【发布时间】:2021-10-15 19:16:39
【问题描述】:

我正在尝试将一些日期字符串解析为日期值,但是,使用下面的代码,我得到了一个异常:

我的代码

    DateTimeFormatter formatter = new DateTimeFormatterBuilder()
          .parseCaseInsensitive()
          .append(DateTimeFormatter.ofPattern("MMM-uuuu"))
          .parseDefaulting(ChronoField.DAY_OF_MONTH, 1)
          .toFormatter(Locale.ENGLISH);

         LocalDate KFilter = null;
         KFilter = YearMonth.parse("July-2021", formatter).atDay(1)

错误日志是

java.time.format.DateTimeParseException: Text 'July-2021' could not be parsed at index 3

【问题讨论】:

  • 当您使用parseDefaulting(ChronoField.DAY_OF_MONTH, 1)时,无需绕道YearMonth。你可以简单地使用LocalDate kFilter = LocalDate.parse("Jul-2021", formatter);

标签: java java-8 localdate


【解决方案1】:

格式应该匹配。 试试这个。

DateTimeFormatter formatter = new DateTimeFormatterBuilder()
        .parseCaseInsensitive()
        .append(DateTimeFormatter.ofPattern("MMM-uuuu"))
        .parseDefaulting(ChronoField.DAY_OF_MONTH, 1)
        .toFormatter(Locale.ENGLISH);
    
    LocalDate KFilter = null;
    KFilter = YearMonth.parse("Jul-2021", formatter).atDay(1);

【讨论】:

    【解决方案2】:

    我认为格式是问题: "MMM-uuuu" 与字符串 "july" 不兼容,因此在索引 3 'y' 处,它期待的是 '-'

    【讨论】:

      【解决方案3】:

      使用 2021 年 7 月而不是 2021 年 7 月

      LocalDate KFilter = null;
               KFilter = YearMonth.parse("Jul-2021", formatter).atDay(1)
      

      【讨论】:

        猜你喜欢
        • 2012-02-17
        • 2021-10-13
        • 2020-12-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-07-12
        相关资源
        最近更新 更多