Android / Kotlin - разница в днях между двумя отметками времени - PullRequest
1 голос
/ 20 января 2020

Я столкнулся с проблемой и не могу понять, как ее решить правильно.

// Imagine these values are timestamps
val comboStart: Long = 7pm day 1
val comboEnd: Long = 1am day 2

fun foo() {
    if (differenceBetweenTimestamps() > 1) {
        println("Day changed")
    } else {
        println("Still the same day")
    } 
}

fun differenceBetweenTimestamps(): Long {
    return TimeUnit.MILLISECONDS.toDays(comboEnd - comboStart)
}

Проблема с этим фрагментом кода состоит в том, что он только скажет мне, что день изменился если разница между двумя временными метками больше одного дня, но, как вы можете видеть, я объявил 2 временные метки с разницей между ними менее 24 часов, даже если день изменился в этом сценарии.

Любая идея, как можно Я это решаю?

1 Ответ

0 голосов
/ 20 января 2020

Поскольку Timeunit.MILLISECONDS начинается в полночь 1 января 1970 г. UT C, я бы посоветовал вам разделить (длинное деление) значение миллисекунды на миллисекунды в день (должно быть 86400000). Если результат отличается на 1, день изменился.

Поэтому вместо TimeUnit.MILLISECONDS.toDays (comboEnd - comboStart) попробуйте TimeUnit.MILLISECONDS.toDays (comboEnd) - TimeUnit.MILLISECONDS.toDays (comboStart)

...