Reputation: 81
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 :
i dont know whats wrong in my code, please somebody help me :(
thanks in advance..
Upvotes: 0
Views: 1446
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"
}
}
Upvotes: 3