android - 如何在 KOTLIN 中以小时为单位查找两个 UNIX 时间戳之间的差异?
问题描述
我有两个 UNIX 时间戳,我正在使用 KOTLIN
1) 旧时间 - 1534854646 2) 当前时间 - 1534857527
现在我想要小时和分钟的差异。
val result = DateUtils.getRelativeTimeSpanString(1534854646, 1534857527, 0)
但它给了我 2 秒,但实际时差约为 0 小时 48 分钟。
我也试过:
long mills = 1534857527 - 1534854646;
int hours = millis/(1000 * 60 * 60);
int mins = (mills/(1000*60)) % 60;
String diff = hours + ":" + mins;
但它仍然给出了 0 小时和 0 分钟。
解决方案
这是我的解决方案,代码是用 Kotlin 编写的。
TimeInHours.kt
class TimeInHours(val hours: Int, val minutes: Int, val seconds: Int) {
override fun toString(): String {
return String.format("%dh : %02dm : %02ds", hours, minutes, seconds)
}
}
编写一个函数,将持续时间(以秒为单位)转换为TimeInHours
.
fun convertFromDuration(timeInSeconds: Long): TimeInHours {
var time = timeInSeconds
val hours = time / 3600
time %= 3600
val minutes = time / 60
time %= 60
val seconds = time
return TimeInHours(hours.toInt(), minutes.toInt(), seconds.toInt())
}
测试.kt
val oldTime: Long = 1534854646
val currentTime: Long = 1534857527
val result = convertFromDuration(currentTime - oldTime)
Log.i("TAG", result.toString())
输出:
I/TAG: 0h : 48m : 01s
推荐阅读
- c# - How can you wait on AppDomain to process async callback in C# and then return the results?
- azure - 无所有权的 Azure 云全面运营管理
- javascript - 在最后一个子jQuery之前插入
- mysql - insert_from 超过两个数据库
- sqlite - 为什么 '%d-%m-%Y' 格式总是返回 NULL?
- haproxy - HAProxy 棒表是否已预先分配?
- javascript - 由时间计算确定的浮动条形图中的 D3 多色条
- php - 重建 PHP 数组以正确地将数据放入 html 表中
- reactjs - React ChartJS 空状态 axios 调用
- postgresql - PostgreSQL - 提取当地时间的日期范围?