Как мне конвертировать время ISO, чтобы показать, сколько часов назад что-то было опубликовано в андроид студии? - PullRequest
0 голосов
/ 04 декабря 2018

Я получаю время в формате 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"
    }
}}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...