我一直面临一个问题,我想不通如何正确解决它。

// 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)
}

这段代码的问题在于,如果两个时间戳之间的时差大于一天,它只会告诉我日期发生了变化,但是您可以看到我声明了两个时间戳之间的时差都小于24小时,即使尽管在这种情况下日期发生了变化。

知道我该如何解决吗?

最佳答案

随着Timeunit.MILLISECONDS从1970年1月1日世界标准时间午夜开始,我建议您将(长除法)毫秒值除以每天的毫秒数(应为86400000)。如果结果相差1,则日期会更改。

因此,而不是TimeUnit.MILLISECONDS.toDays(comboEnd-comboStart)
尝试TimeUnit.MILLISECONDS.toDays(comboEnd)-TimeUnit.MILLISECONDS.toDays(comboStart)

关于android - Android/Kotlin-两个时间戳之间的天差,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59830063/

10-10 13:27