我一直面临一个问题,我想不通如何正确解决它。
// 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/