首页 > 解决方案 > 从在 Kotlin 中存储为文本的日历时间中减去天数

问题描述

所以我在 Kotlin 中取当前日期:

val calendar = Calendar.getInstance()
calendar.add(Calendar.DAY_OF_YEAR, -daysAgo)

我将它作为文本存储在标签上:time = calendar.time.toString()

接下来,我想从标签文本中减去 2 天:

val date = LocalDate.parse(time)    
val cal = Calendar.getInstance()
cal.time = java.sql.Date.valueOf(date.toString())
cal.add(Calendar.DAY_OF_YEAR, -daysAgo)

方法在此行之后抛出了“java.time.format.DateTimeParseException”异常:LocalDate.parse(time) 有什么想法吗?

标签: kotlin

解决方案


我将使用自 JDK 8 以来可用的新时间 API,可以在java.time. 您还应该同意正在使用的格式:

val format = DateTimeFormatter.ISO_DATE_TIME
val current = LocalDateTime.now()
val currentAsText = current.format(format)
println(currentAsText) // e.g. 2019-02-27T12:00:00.000

val fromText = LocalDateTime.parse(currentAsText, format)
val twoDaysAgo = fromText.minusDays(2)
println(twoDaysAgo) // 2019-02-27T12:00:00.000

推荐阅读