Kotlin Date Error Несоответствие типа: предполагаемый тип - Дата? но дата была ожидаемой

lateinit var endTime:String
lateinit var enDate:Date

val formatter= SimpleDateFormat("dd.MM.yyyy, HH:mm:ss")

endTime=tarihBul()+", 00:00:00"

**enDate=formatter.parse(endTime)  -->213**
miliseconds=enDate.time


   private fun tarihBul():String {

        val tarihFormat= SimpleDateFormat("dd.MM.yyyy")
        val tarih= Date()
        val simdiTarih=tarihFormat.format(tarih)


        return simdiTarih.toString()

w: F: \ Dersler \ Kotlin_uygulamalar \ Namazvakitleri \ app \ src \ main \ java \ com \ erdemselvi \ namazvakitleri \ widget \ VakitlerWidget.kt: (213, 16): Несоответствие типа: предполагаемый тип - Дата? но дата была ожидаемой


person Erdem SELVİ    schedule 04.05.2021    source источник
comment
Я рекомендую вам не использовать SimpleDateFormat и Date. Эти классы плохо спроектированы и давно устарели, а первые, как известно, доставляют много хлопот. Вместо этого используйте LocalDate, LocalDateTime и DateTimeFormatter, все из java.time, современного API даты и времени Java..   -  person Ole V.V.    schedule 04.05.2021


Ответы (1)


SimpleDateFormat.parse - это java-функция, которая может возвращать дату Date?, допускающую значение NULL. Поскольку enDate определяется как Date, и вы пытаетесь назначить дату, допускающую значение NULL, kotlin пытается избежать этого и выдает ошибку.

Вы можете использовать оператор UNSAFE !!.

 enDate=formatter.parse(endTime)!!

или обрабатывать нулевой регистр явно

 enDate=formatter.parse(endTime)?.let{ YOUR LOGIC TO THROW ERROR OR DEFAULT VALUE}
person sidgate    schedule 04.05.2021
comment
Возможно, стоит указать, что причина, по которой parse() имеет тип, допускающий значение NULL, заключается в том, что он возвращает значение NULL, если строка не является допустимой датой. Так что в этом случае вам нужно подумать, как обращаться. (Конечно, есть и другие способы справиться с этим. Но компилятор заставляет вас как-то справиться с этим.) - person gidds; 04.05.2021
comment
teşekkürler. !! ile sorun çözüldü. - person Erdem SELVİ; 04.05.2021