mirror of
https://github.com/mamoe/mirai.git
synced 2025-01-05 07:30:09 +08:00
Update duration display
This commit is contained in:
parent
781af6d837
commit
0716438242
@ -24,6 +24,7 @@ import net.mamoe.mirai.network.closeAndJoin
|
||||
import net.mamoe.mirai.utils.*
|
||||
import net.mamoe.mirai.utils.internal.retryCatching
|
||||
import kotlin.coroutines.CoroutineContext
|
||||
import kotlin.time.Duration
|
||||
import kotlin.time.ExperimentalTime
|
||||
import kotlin.time.measureTime
|
||||
|
||||
@ -138,7 +139,7 @@ abstract class BotImpl<N : BotNetworkHandler> constructor(
|
||||
reconnect()
|
||||
}
|
||||
|
||||
logger.info { "Reconnected successfully in ${time.inMilliseconds} ms" }
|
||||
logger.info { "Reconnected successfully in ${time.asHumanReadable}" }
|
||||
}
|
||||
is BotOfflineEvent.Active -> {
|
||||
val msg = if (event.cause == null) {
|
||||
|
@ -15,6 +15,10 @@ package net.mamoe.mirai.utils
|
||||
import kotlin.jvm.JvmMultifileClass
|
||||
import kotlin.jvm.JvmName
|
||||
import kotlin.jvm.JvmSynthetic
|
||||
import kotlin.math.floor
|
||||
import kotlin.time.Duration
|
||||
import kotlin.time.DurationUnit
|
||||
import kotlin.time.ExperimentalTime
|
||||
|
||||
/**
|
||||
* 时间戳
|
||||
@ -76,4 +80,21 @@ inline val Int.weeksToSeconds: Long
|
||||
|
||||
@get:JvmSynthetic
|
||||
inline val Int.monthsToSeconds: Long
|
||||
get() = this * 30.daysToSeconds
|
||||
get() = this * 30.daysToSeconds
|
||||
|
||||
@ExperimentalTime
|
||||
val Duration.asHumanReadable: String
|
||||
get() {
|
||||
val builder = StringBuilder()
|
||||
val days = toInt(DurationUnit.DAYS)
|
||||
val hours = toInt(DurationUnit.HOURS) % 24
|
||||
val minutes = toInt(DurationUnit.MINUTES) % 60
|
||||
val s = floor(toDouble(DurationUnit.SECONDS) % 60 * 1000) / 1000
|
||||
with(builder) {
|
||||
if (days != 0) append("${days}d ")
|
||||
if (hours != 0) append("${hours}h ")
|
||||
if (minutes != 0) append("${minutes}min ")
|
||||
append("${s}s")
|
||||
}
|
||||
return builder.toString()
|
||||
}
|
||||
|
@ -0,0 +1,31 @@
|
||||
/*
|
||||
* Copyright 2020 Mamoe Technologies and contributors.
|
||||
* 此源代码的使用受 GNU AFFERO GENERAL PUBLIC LICENSE version 3 许可证的约束, 可以在以下链接找到该许可证.
|
||||
* Use of this source code is governed by the GNU AGPLv3 license that can be found through the following link.
|
||||
*
|
||||
* https://github.com/mamoe/mirai/blob/master/LICENSE
|
||||
*/
|
||||
|
||||
package net.mamoe.mirai.utils
|
||||
|
||||
import kotlin.test.Test
|
||||
import kotlin.test.assertTrue
|
||||
import kotlin.time.DurationUnit
|
||||
import kotlin.time.ExperimentalTime
|
||||
import kotlin.time.toDuration
|
||||
|
||||
internal class TimeTest {
|
||||
@ExperimentalTime
|
||||
@Test
|
||||
fun testTimeHumanReadable() {
|
||||
val time0 = 1.toDuration(DurationUnit.DAYS) +
|
||||
20.toDuration(DurationUnit.HOURS) +
|
||||
15.toDuration(DurationUnit.MINUTES) +
|
||||
2057.toDuration(DurationUnit.MILLISECONDS)
|
||||
println(time0.asHumanReadable)
|
||||
assertTrue { time0.asHumanReadable == "1d 20h 15min 2.057s" }
|
||||
val time1 = 1.toDuration(DurationUnit.DAYS) + 59.toDuration(DurationUnit.MINUTES)
|
||||
println(time1.asHumanReadable)
|
||||
assertTrue { time1.asHumanReadable == "1d 59min 0.0s" }
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user