【问题标题】:localdate parsing can't parse hours and minuteslocaldate 解析无法解析小时和分钟
【发布时间】:2017-11-12 11:18:25
【问题描述】:

我需要从String 获取日期,格式如下:uuuu-MM-dd HH:mm

输入具有该格式,我希望我的日期使用相同的格式(年-月-日时:分)。当我这样做时:

LocalDate aux = LocalDate.parse(times.get(index),DateTimeFormatter.ofPattern("uuuu-MM-dd HH:mm "));

使用此输入:2017-12-05 20:16 我只得到这个:2017-12-05

我不知道为什么,我尝试了很多格式,但总是丢失小时和分钟。有什么想法吗?

【问题讨论】:

  • 你认为LocalDate 代表什么?
  • 顾名思义 LocalDate 只存储年、月和日。如果您想要日期和时间,LocalDateTime 是一个选择。
  • 另外,删除模式末尾的尾随空格。
  • 有几个现代 Java 日期和时间类是一个优势,但也有一点障碍。你需要付出一点努力来选择适合你的目的。完成此操作后,您将拥有一个(通常)完全适合该目的的类,而不是旧的应该适合所有人的 Date 类。 @PallaviSonal 在这种情况下您需要哪个类是正确的。

标签: java date java-time date-parsing localdate


【解决方案1】:

LocalDate 只有年、月、日字段。它不能包含时间数据。

请改用LocalDateTime

LocalDateTime aux = LocalDateTime.parse("2017-12-05 20:16", DateTimeFormatter.ofPattern("uuuu-MM-dd HH:mm"));

【讨论】:

  • 现在,在日期和时间之间我得到一个“T”是否可以删除? @bowmore
  • @Aikas 带有 T 的字符串是 toString 方法的结果。如果您想要不同的格式,请使用DateTimeFormatter
  • 这是您在打印LocalDateTime 时获得的默认格式,请使用DateTimeFormatter 以您想要的格式打印。
  • @Andreas 在用于解析的DateTimeFormatter 中不需要 T。实际上它会使解析失败,因为源字符串没有'T'。
猜你喜欢
  • 2017-01-04
  • 2020-08-15
  • 2018-03-11
  • 2013-07-03
  • 1970-01-01
  • 2017-08-16
  • 1970-01-01
  • 1970-01-01
  • 2018-03-01
相关资源
最近更新 更多