Search code examples
androidkotlindatetimekotlin-multiplatformktor

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
}

Solution

  • 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
    }