将字符串转换为 LocalDateTime

Posted

技术标签:

【中文标题】将字符串转换为 LocalDateTime【英文标题】:Convert string into LocalDateTime 【发布时间】:2019-11-27 12:34:12 【问题描述】:

我有以下字符串:

18/07/2019 16:20

我尝试使用以下代码将此字符串转换为LocalDateTime

val stringDate = expiration_button.text.toString()
val date = LocalDateTime.parse(stringDate, DateTimeFormatter.ofPattern("dd/MM/yyyy hh:mm")).toString()

java.time.format.DateTimeParseException:文本'18/07/2019 04:30:00' 无法解析:无法从中获取 LocalDateTime 时间存取器

我错过了什么?

【问题讨论】:

也许这个能帮上忙 -> ***.com/questions/27454025/… DateTimeParseException: Text '2019-06-07 12:18:16' could not be parsed的可能重复 【参考方案1】:

我想这会回答你的问题:

val stringDate = expiration_button.text.toString()
val formatter = DateTimeFormatter.ofPattern("dd/MM/yyyy hh:mm");
val dt = LocalDate.parse(stringDate, formatter);

编辑 1:

它可能会崩溃,因为您使用的是 12 小时制,而不是 24 小时制。

通过使用大写 H 将小时模式更改为 24 小时模式应该可以解决此问题:

val dateTime = LocalDateTime.parse(stringDate, DateTimeFormatter.ofPattern("dd/MM/yyyy HH:mm"));

【讨论】:

它适用于 LocalDate,但我需要 LocalDateTime,因为这样我会浪费时间。如果我将 LocalDate 更改为 LocalDateTime 它会崩溃。 我已经编辑了我的答案,请告诉我进展如何。 问题在于时间。我有hh 而不是HH。谢谢!【参考方案2】:

使用下面将时间从 String 转换为 LocalDateTime,但请确保您以 String 形式获取时间。

String str = "2016-03-04 11:30";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm");
LocalDateTime dateTime = LocalDateTime.parse(str, formatter);

顺便说一句,如果您的字符串包含秒以及“2016-03-04 11:30:40”,那么您可以将日期时间格式更改为 yyyy-MM-dd HH:mm:ss”,如下所示:

String str = "2016-03-04 11:30: 40";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
LocalDateTime dateTime = LocalDateTime.parse(str, formatter);

【讨论】:

【参考方案3】:

将您的日期时间格式更改为 "dd/MM/yyyy hh:mm a" 并提供带有附加 AM/PM 信息的字符串日期,例如val stringDate = "18/07/2019 04:20 PM" 或仅使用 24 小时格式 "dd/MM/yyyy HH:mm"

【讨论】:

如果一方面给出了字符串18/07/2019 16:20,那么以这种方式修改它并非易事。另一方面,如果有可能获得不同的字符串,我建议在ISO 8601 format 中使用一个字符串,所以2019-07-18T16:20LocalDateTime 将在没有任何显式格式化程序的情况下解析这样的字符串,从而简化事情。【参考方案4】:

您可以尝试在日期上使用“-”而不是“/”。

【讨论】:

以上是关于将字符串转换为 LocalDateTime的主要内容,如果未能解决你的问题,请参考以下文章

如何在不将 LocalDateTime 字段转换为扩展的 json 对象的情况下将 java 对象转换为简单的 json 字符串?

java8日期时间API的一些使用 | 转字符串 | 格式化等

java8日期时间API的一些使用 | 转字符串 | 格式化等

关于java1.8中LocalDateTime实现日期,字符串互转小坑。

Java日期格式转换

localdate如何返回成字符串前端