Duration.toString所在位置是kotlin.time.Duration.toString,其相关用法介绍如下。

用法一

fun toString(): String

返回此持续时间值的字符串表示形式,表示为数字分量的组合,每个分量都有自己的单位。

每个组件都是一个数字,后跟单位缩写名称:dhms5h1d 12h1h 0m 30.340s。最后一个组成部分,通常是秒,可以是带有小数部分的数字。

如果持续时间小于一秒,则表示为具有sub-second 单位之一的单个数字:ms(毫秒)、us(微秒)或ns(纳秒):140.884ms500us24ns

负持续时间以 - 符号为前缀,如果它由多个组件组成,则用括号括起来:-12m-(1h 30m)

特别案例:

  • 无限持续时间被格式化为 "Infinity""-Infinity" 没有单位。

当您想在序列化、交换等情况下将持续时间转换为字符串时,建议使用使用更严格的 ISO-8601 格式的 toIsoString 而不是此 toString

例子:

import kotlin.test.*

import kotlin.time.*
import kotlin.time.Duration.Companion.days
import kotlin.time.Duration.Companion.milliseconds
import kotlin.time.Duration.Companion.minutes
import kotlin.time.Duration.Companion.nanoseconds
import kotlin.time.Duration.Companion.seconds

fun main(args: Array<String>) {
//sampleStart
println(45.days) // 45d
println(1.5.days) // 1d 12h
println(1230.minutes) // 20h 30m
println(920.minutes) // 15h 20m
println(1.546.seconds) // 1.546s
println(25.12.milliseconds) // 25.12ms
//sampleEnd
}

输出:

45d
1d 12h
20h 30m
15h 20m
1.546s
25.12ms

用法二

fun toString(unit: DurationUnit, decimals: Int = 0): String

返回此持续时间值的字符串表示形式,以给定的 unit 表示,并使用指定的 decimals 小数点后位数进行格式化。

特别案例:

  • 无限持续时间被格式化为 "Infinity""-Infinity" 没有单位。

例子:

import kotlin.test.*

import kotlin.time.*
import kotlin.time.Duration.Companion.days
import kotlin.time.Duration.Companion.milliseconds
import kotlin.time.Duration.Companion.minutes
import kotlin.time.Duration.Companion.nanoseconds
import kotlin.time.Duration.Companion.seconds

fun main(args: Array<String>) {
//sampleStart
println(1230.minutes.toString(DurationUnit.DAYS, 2)) // 0.85d
println(1230.minutes.toString(DurationUnit.HOURS, 2)) // 20.50h
println(1230.minutes.toString(DurationUnit.MINUTES)) // 1230m
println(1230.minutes.toString(DurationUnit.SECONDS)) // 73800s
//sampleEnd
}

输出:

0.85d
20.50h
1230m
73800s

参数

decimals- 要显示的小数点后的位数。该值必须为非负数。即使请求更大的数字,也不会显示超过 12 位小数。

异常

IllegalArgumentException- 如果小数点小于零。

返回指定的 unit 中的持续时间值,后跟该单位的缩写名称:dhmsmsusns