вычесть дни из календарного времени, сохраненного в виде текста в Kotlin - PullRequest
0 голосов
/ 27 февраля 2019

Поэтому я беру текущую дату в 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) любые мысли?

Ответы [ 2 ]

0 голосов
/ 27 февраля 2019

С Дата Класс:

public String toString ()Преобразует этот объект Date в строку вида:Доу пн дд чч: мм: сс зззгггг

это приводит к следующему формату:

Fri Feb 22 11:45:35 EET 2019

Вам необходимо ZonedDateTime для анализа этого формата, например:

val date = ZonedDateTime 
    .parse(time, DateTimeFormatter.ofPattern("EEE MMM dd HH:mm:ss zzz yyyy", Locale.ENGLISH))
    .toLocalDate()
0 голосов
/ 27 февраля 2019

Я бы использовал новый API времени, который доступен с JDK 8 и находится в 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...