Ошибка преобразования строки в дату с исключением — неразрешимая дата, даже если формат правильный

#android #kotlin

#Android #kotlin

Вопрос:

Ошибка:

 W/System.err: java.text.ParseException: Unparseable date: "Jul 20 2020 17:21:02"
 

Код:

 fun getDate(): Long {
    var dateInMillis = 0L
    var date: Date? = null

    try {
        val stringDate = "Jul 20 2020 17:21:02"
        date = SimpleDateFormat("MMM dd yyyy HH:mm:ss").parse(stringDate)
    } catch (e: Exception) {
        e.printStackTrace()
    }

    date?.let {
        dateInMillis = it.time
    }

    return dateInMillis
}
 

Формат выглядит правильно, но я все равно получаю неразрешимую ошибку даты. Есть идеи?

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

1. Я просто скопировал / вставил ваш код, и он работает нормально, может быть, поделитесь своим импортом? Я бы также предложил не использовать 01/01/1970 в качестве getDate запасного варианта.

Ответ №1:

Вы должны использовать Locale with SimpleDateFormat , поскольку вы не создаете его по умолчанию.

например:

 SimpleDateFormat("MMM dd yyyy HH:mm:ss",Locale.US).parse(stringDate)
 

Ответ №2:

Вы можете использовать приведенный ниже код.

 import java.time.LocalDateTime
import java.time.format.DateTimeFormatter

fun main() {
    val str =  "Jul 20 2020 17:21:02";
    val formatter = DateTimeFormatter.ofPattern("MMM dd yyyy HH:mm:ss");
    val dt = LocalDateTime.parse(str,formatter);

    println(dt.toString())
}