我有一个 Kotlin 代码,它从 SQLite DB 检索日期(在文本字段中)并将其放入LocalDate
变量(pill.startDay
)中,我从中显示日期,如下所示
val dtf: DateTimeFormatter = DateTimeFormatter.ofPattern("dd/MM/uuuu", Locale.ITALY)
val startDayStr: String =dtf.format(pill.startDay)
holder.tvStartDate.text = "Start: $startDayStr"
现在我还需要显示小时和分钟,但我已经尝试了许多模式(例如“dd/MM/uuuu HH:mm”或“dd/MM/uuuu'T'HH:mm”或“dd/MM/uuuu HH:mm z”)都没有成功(应用程序总是崩溃)
完整的数据类是:
data class Pill(val id: Int,
val pillName: String,
val yesDays: Int,
val pauseDays: Int = 0,
val startDay: LocalDate = LocalDate.now())
错误是:
致命异常:主进程:com.example.mytestapp,PID:24087 java.time.temporal.UnsupportedTemporalTypeException:不支持的字段:HourOfDay
您之所以得到这样的信息是
UnsupportedTemporalTypeException
因为您已经用 定义了您的数据LocalDate
。LocalDate
没有关于时间的任何信息,一旦您尝试将其转换为时间,就会导致崩溃。您需要更新数据类以使其
Pill
不再LocalDateTime
是LocalDate
:无法打印一天中的小时、一小时中的分钟以及更长时间的原因是,a
LocalDate
仅存储了有关一月中的天数、一年中的月份和年份的信息。您需要的似乎是 a
LocalDateTime
,它由 aLocalDate
和 a组合而成LocalTime
。