如何解决如何将毫秒转换为模式 mm:ss for kotlin
我有以下代码,但我不明白我想要的结果是如何出错的, 起初我有一个总时间应该是 Long (Milisecond) 类型,然后我需要将它转换为格式 mm: ss 不是格式 (HH: mm: ss),那么谁能帮我转换它转 mm:ss 格式
private fun startCounting() {
var i = 60100
val totalSeconds =
TimeUnit.MINUTES.toSeconds(i.toLong())
Handler().postDelayed({
val tickSeconds = 0
for (second in tickSeconds until totalSeconds) {
val time =
String.format(
"%02d:%02d",TimeUnit.MILLISECONDS.toMinutes(second),TimeUnit.MILLISECONDS.toSeconds(second) % TimeUnit.MINUTES.toMinutes(1)
)
}
},1000)
}
谢谢
解决方法
分钟数是毫秒数除以 60000。秒数是毫秒数除以 1000。但是要从秒数中去除分钟,您需要将其除以 60 的余数。
val minutes = i / 1000 / 60
val seconds = i / 1000 % 60
val formatted = String.format("%02d:%02d",minutes,seconds)
看起来您可能正在尝试每秒显示一次更新值的倒计时。但是在 for 循环中同步循环数字只会立即显示最终值。相反,您可以使用具有延迟的协程来做到这一点:
private fun startCounting() = lifecycleScope.launch {
val startTime = System.currentTimeMillis()
var remainingTime = 60100L
while (remainingTime >= 0) {
val minutes = remainingTime / 1000 / 60
val seconds = remainingTime / 1000 % 60
myTextView.text = String.format("%02d:%02d",seconds)
delay(1000L)
remainingTime = (60100L - System.currentTimeMillis() + startTime)
}
}
,
使用 kotlin.time
包中的实验性 Duration
类型,您可以先将毫秒数转换为 Duration
,然后使用其 toComponents
方法将其拆分为分钟和秒:
import kotlin.time.*
fun main() {
val millis = 260100
val duration = millis.toDuration(DurationUnit.MILLISECONDS)
val timeString =
duration.toComponents { minutes,seconds,_ ->
String.format("%02d:%02d",seconds)
}
println(timeString) // prints 04:20
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。