Как преобразовать календарь в дату в Kotlin?

#android #date #kotlin #calendar

#Android #Дата #котлин #Календарь

Вопрос:

Я пытаюсь добавить один месяц к дате с помощью Calendar.getInstance (), но я не могу понять, почему возникает ошибка «java.lang.ClassCastException: java.util.Дата не может быть преобразована в java.lang.Number » при попытке преобразовать календарь в объект Date.

Вот исходный код, который я использую :

     val date = Date()
    val cal = Calendar.getInstance()
    cal.time = date
    cal.add(Calendar.MONTH, 1)
    val datePlusOneMonth: Date = cal.time
  

Комментарии:

1. Предоставленный вами код отлично работает на моей стороне. Возможно, ошибка появляется где-то еще в вашем коде? Пожалуйста, проверьте журналы и найдите номер строки ошибки

2. cal.time = date здесь не нужен, иначе какая строка выдает вам эту ошибку?

3. Да, код на моей стороне работает нормально

4. Да, у меня есть. Вы можете установить журнал после строки val datePlusOneMonth: Date = cal.time и проверить его

5. Потому что он не генерирует исключение)

Ответ №1:

Спасибо, Сергей… Код выполняется нормально. Но я был разочарован, потому что я добавил бесполезную строку кода для отладки, и я поставил точку останова на ней :

 val datePlusOneMonth: Date = cal.time
val ok = false
  

И я поставил точку останова на «val ok = false», и отладчик никогда не останавливался на «val ok = false», потому что «ok» никогда не использовался.

Затем, чтобы отладчик остановился на «val ok = false», мне пришлось сделать следующее :

 val datePlusOneMonth: Date = cal.time
val ok = false
val ok2 = ok
  

И тогда я мог бы добавить прерывание в «val ok = false», и да, код выполняется хорошо.

Ответ №2:

попробуйте этот код

 val datePlusOneMonth = Calendar.getInstance().run {
    add(Calendar.MONTH, 1)
    time
}
  

Комментарии:

1. Хорошо, спасибо за ответ, но мы выяснили, что мой код выполняется правильно. В любом случае, я рассмотрю это в следующий раз.