diff --git a/libraries/stdlib/src/kotlin/time/Duration.kt b/libraries/stdlib/src/kotlin/time/Duration.kt index 07b2d5f843f..9ca6a94d3bb 100644 --- a/libraries/stdlib/src/kotlin/time/Duration.kt +++ b/libraries/stdlib/src/kotlin/time/Duration.kt @@ -100,6 +100,10 @@ public inline class Duration internal constructor(internal val _value: Double) : val inMicroseconds: Double get() = toDouble(DurationUnit.MICROSECONDS) val inNanoseconds: Double get() = toDouble(DurationUnit.NANOSECONDS) + // shortcuts + + fun toLongNanoseconds(): Long = toLong(DurationUnit.NANOSECONDS) + fun toLongMilliseconds(): Long = toLong(DurationUnit.MILLISECONDS) override fun toString(): String = buildString { if (isInfinite()) { diff --git a/libraries/stdlib/test/time/DurationTest.kt b/libraries/stdlib/test/time/DurationTest.kt index 243f2fb1f3c..95eb9e7b4b0 100644 --- a/libraries/stdlib/test/time/DurationTest.kt +++ b/libraries/stdlib/test/time/DurationTest.kt @@ -113,6 +113,12 @@ class DurationTest { assertEquals(0.0, Duration.ZERO.inNanoseconds) + assertEquals(10500, 10.5.seconds.toLongMilliseconds()) + assertEquals(11, 11.5.milliseconds.toLongMilliseconds()) + assertEquals(-11, (-11.5).milliseconds.toLongMilliseconds()) + assertEquals(252_000_000, 252.milliseconds.toLongNanoseconds()) + assertEquals(Long.MAX_VALUE, (365.days * 293).toLongNanoseconds()) // clamping overflowed value + repeat(100) { val value = Random.nextLong(1000) val unit = units.random()