xfathurrahman
xfathurrahman

Reputation: 81

how to calculate month and year ago in kotlin android studio "time ago"

this is my code to parse "Time Ago" from database Created_at , i just got Days ago, the months & years ago is not showing..

    @SuppressLint("SimpleDateFormat")
private fun formatTimeAgo(date1: String): String {
    var conversionTime =""

    try{
        val format = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"

        val sdf = SimpleDateFormat(format)
        sdf.timeZone = TimeZone.getTimeZone("GMT")

        val datetime= Calendar.getInstance()
        val date2= sdf.format(datetime.time).toString()

        val Past = sdf.parse(date1)
        val Now = sdf.parse(date2)
        val diff = Now.time - Past.time

        val diffsec = diff  / 1000
        val diffmin = diff / (60 * 1000)
        val diffhours = diff / (60 * 60 * 1000)
        val diffDays = diff / (24 * 60 * 60 * 1000)
        val diffMonts = diff / (30 * 24 * 60 * 60 * 1000) -> show warning **This operation has led to an overflow**
        val diffYears = diff / (24 * 365 * 60 * 60 * 1000) -> show warning **This operation has led to an overflow**

        when {
            diff<diffYears -> {
                conversionTime+= " $diffYears years ago"
            }
            diffMonts>1 -> {
                conversionTime+= (diffMonts-diffYears/12).toString()+" months ago "
            }
            diffDays>1 -> {
                conversionTime += (diffDays-diffMonts/30).toString()+" days ago "
            }
            diffhours>1 -> {
                conversionTime+=(diffhours-diffDays*24).toString()+" hours ago "
            }
            diffmin>1 -> {
                conversionTime+=(diffmin-diffhours*60).toString()+" min ago "
            }
            diffsec>1 -> {
                conversionTime+= " Just Now "
            }
        }

    }catch (ex:java.lang.Exception){
        Log.e("formatTimeAgo",ex.toString())
    }
    return conversionTime
}

this is what i got in my app :

please see this picture

i dont know whats wrong in my code, please somebody help me :(

thanks in advance..

Upvotes: 0

Views: 1446

Answers (1)

Abdur Rohman
Abdur Rohman

Reputation: 174

This code works for me

var result = format.format(it)

val diff = Calendar.getInstance().time.time - it.time

val oneSec = 1000L
val oneMin: Long = 60 * oneSec
val oneHour: Long = 60 * oneMin
val oneDay: Long = 24 * oneHour
val oneMonth: Long = 30 * oneDay
val oneYear: Long = 365 * oneDay

val diffMin: Long = diff / oneMin
val diffHours: Long = diff / oneHour
val diffDays: Long = diff / oneDay
val diffMonths: Long = diff / oneMonth
val diffYears: Long = diff / oneYear

when {
    diffYears > 0 -> {
        result += " $diffYears years ago"
    }
    diffMonths > 0 && diffYears < 1 -> {
        result += " ${(diffMonths - diffYears / 12)} months ago "
    }
    diffDays > 0 && diffMonths < 1 -> {
        result += " ${(diffDays - diffMonths / 30)} days ago "
    }
    diffHours > 0 && diffDays < 1 -> {
        result += " ${(diffHours - diffDays * 24)} hours ago "
    }
    diffMin > 0 && diffHours < 1 -> {
        result += " ${(diffMin - diffHours * 60)} min ago "
    }
    diffMin < 1 -> {
        result += " just now"
    }
}

Screenshot

Upvotes: 3

Related Questions