【问题标题】:Transform String to LocalDate --> Unsupported field: NanoOfDay :将字符串转换为 LocalDate --> 不支持的字段: NanoOfDay :
【发布时间】:2019-07-16 08:19:26
【问题描述】:

我想将字符串转换为特定格式的 LocalDate (yyyy-MM-dd),我的字符串已经是 ISO_LOCAL_DATE 格式。

代码

 private LocalDate myDate;
 public MyObject(String name, LocalDate myDate) {...}

 DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
 MyObject myObject = new myObject("my object name", LocalDate.parse("2019-03-01", formatter));

错误

java.time.temporal.UnsupportedTemporalTypeException:不支持的字段:NanoOfDay

已经尝试过

object = new Object("object name", (LocalDate) formatter.parse("2019-03-01"));

use SimpleDateFormatter

【问题讨论】:

  • 您确定发布了测试代码吗?格式化程序似乎没问题。
  • 错误很可能发生在其他地方,在您没有向我们展示的代码中,因为您发布的将2019-03-01 等字符串解析为LocalDate 的代码是正确的并且不会抛出一个UnsupportedTemporalTypeException
  • 我打赌你使用的是 joda.time 包而不是 java.time
  • @Lino 刚刚用 java.time 编译了代码,没有任何错误。但它确实接受另一个包含,joda 的 DateTimeFormatter。
  • 我只是一个愚蠢的人对不起......我会删除这个帖子。确实,代码运行良好,我找错地方了……抱歉。

标签: java java-8 localdate


【解决方案1】:

如果字符串的格式类似于 ISO_LOCAL_DATE,则可以解析 直接字符串,无需转换。

在 Java-8 中

 public static void main(String[] argv) {
            String date = "2019-03-01";
            LocalDate localDate = LocalDate.parse(date);
            System.out.println(localDate);
        }

输出

2019-03-01

【讨论】:

  • 它运行在我的最后,我在 Java 8 中。
  • 不知道我应该如何downvote,用户可以在我错的地方添加解释。
  • 这是我的错,因为我问了一个愚蠢的问题,所以我会接受你的回答来安慰你:p
  • @N.Lamblin,不过没关系,我只是想知道为什么有人这么生气,顺便说一句,我已经用 java 8 标题编辑了我的答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-02-15
  • 1970-01-01
  • 1970-01-01
  • 2011-02-12
  • 2020-08-11
  • 1970-01-01
  • 2018-09-28
相关资源
最近更新 更多