将字符串转换为LocalDateTime

时间:2019-07-18 14:23:17

标签: android date datetime kotlin

我有以下字符串:

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   TemporalAccessor

我缺少什么?

5 个答案:

答案 0 :(得分: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"));

答案 1 :(得分:1)

使用下面的方法将时间从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);

答案 2 :(得分:0)

您可以尝试在日期上使用“-”代替“ /”。

答案 3 :(得分:0)

只需使用LocalDate而不是LocalDateTime

答案 4 :(得分:0)

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