Я получаю время в формате ISO, который хочу преобразовать, а затем показываю, сколько часов назад был получен этот элемент.Я написал код для этого, но результат не верный, когда он возвращается по какой-то причине.Например, если время - минуту назад, это говорит три часа назад!Моя проблема в том, что форматирование не работает, преобразование ISO работает, но форматирование неправильное!
Это мой класс для переформатирования получаемого времени:
class ReformatTime {
@SuppressLint("SimpleDateFormat")
fun convertISOTime(time: String): String {
val inputPattern = "yyyy-MM-dd'T'HH:mm:ss.SSSSSSS'Z'"
val inputFormat = SimpleDateFormat(inputPattern)
return getTimeAgo(inputFormat.parse(time).time)
}
companion object {
private const val SECOND_MILLIS = 1000
private const val MINUTE_MILLIS = 60 * SECOND_MILLIS
private const val HOUR_MILLIS = 60 * MINUTE_MILLIS
private const val DAY_MILLIS = 24 * HOUR_MILLIS
}
private fun getTimeAgo(time: Long): String {
var time = time
if (time < 1000000000000L) {
// if timestamp given in seconds, convert to millis
time *= 1000
}
val now = System.currentTimeMillis()
if (time > now || time <= 0) return ""
val diff = now - time
return when {
diff < MINUTE_MILLIS -> "just now"
diff < 2 * MINUTE_MILLIS -> "a minute ago"
diff < 50 * MINUTE_MILLIS -> "${diff / MINUTE_MILLIS} minutes ago"
diff < 90 * MINUTE_MILLIS -> "an hour ago"
diff < 24 * HOUR_MILLIS -> "${diff / HOUR_MILLIS} hours ago"
diff < 48 * HOUR_MILLIS -> "yesterday"
else -> "${diff / DAY_MILLIS} days ago"
}
}}