EliodeBeirut
EliodeBeirut

Reputation: 104

Kotlin GMTDate Parsing

I have a date response from the server in the form of "2022-10-18 08:30:00". I want to parse it to GMTDate. I am using a function to convert it but i am getting a failure :

Failed to parse date string: "2022-10-18 08:30:00" at index 5. Pattern: "YYYY-MM-dd hh:mm:ss"

fun stringToGMTDateConverter(string: String): GMTDate {
    val parser = GMTDateParser("YYYY-MM-dd hh:mm:ss")
    val date = parser.parse(string)
    return date
}

Upvotes: 0

Views: 261

Answers (2)

EliodeBeirut
EliodeBeirut

Reputation: 104

If we have a server response like this : "2022-10-18 08:30:00". We replace the month by its enum.

fun stringToGMTDateConverter(string: String): GMTDate {
    val monthInOrdinal = string.substring(5, 7)
    val adjustedDate = when (monthInOrdinal) {
        "01" -> {
            string.substring(0, 5).plus("Jan").plus(string.substring(7))
        }
        "02" -> {
            string.substring(0, 5).plus("Feb").plus(string.substring(7))
        }
        "03" -> {
            string.substring(0, 5).plus("Mar").plus(string.substring(7))
        }
        "04" -> {
            string.substring(0, 5).plus("Apr").plus(string.substring(7))
        }
        "05" -> {
            string.substring(0, 5).plus("May").plus(string.substring(7))
        }
        "06" -> {
            string.substring(0, 5).plus("Jun").plus(string.substring(7))
        }
        "07" -> {
            string.substring(0, 5).plus("Jul").plus(string.substring(7))
        }
        "08" -> {
            string.substring(0, 5).plus("Aug").plus(string.substring(7))
        }
        "09" -> {
            string.substring(0, 5).plus("Sep").plus(string.substring(7))
        }
        "10" -> {
            string.substring(0, 5).plus("Oct").plus(string.substring(7))
        }
        "11" -> {
            string.substring(0, 5).plus("Nov").plus(string.substring(7))
        }
        else -> {
            string.substring(0, 5).plus("Dec").plus(string.substring(7))
        }
    }

    val parser = GMTDateParser("YYYY-MMM-dd hh:mm:ss")
    val date = parser.parse(adjustedDate)
    return date
}

Upvotes: 0

Aleksei Tirman
Aleksei Tirman

Reputation: 6999

Unfortunately, the GMTDateParser doesn't support parsing month numbers but only their three-digit abbreviations, like "Oct".

Upvotes: 2

Related Questions