#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. Хорошо, спасибо за ответ, но мы выяснили, что мой код выполняется правильно. В любом случае, я рассмотрю это в следующий раз.