以下是 Kotlin 中 Duration
类的所有方法(基于 Kotlin 1.9+ 标准库),包含方法签名、返回值、说明及示例:
一、属性(Properties)
方法签名 | 返回值 | 说明 | 示例 |
---|---|---|---|
val inDays: Long |
Long |
以天为单位的时长(向下取整) | Duration.ofHours(25).inDays → 1 |
val inHours: Long |
Long |
以小时为单位的时长(向下取整) | Duration.ofMinutes(130).inHours → 2 |
val inMinutes: Long |
Long |
以分钟为单位的时长(向下取整) | Duration.ofSeconds(370).inMinutes → 6 |
val inSeconds: Long |
Long |
以秒为单位的时长(向下取整) | Duration.ofMillis(2500).inSeconds → 2 |
val inMillis: Long |
Long |
以毫秒为单位的总时长 | Duration.ofSeconds(1).inMillis → 1000 |
val isZero: Boolean |
Boolean |
判断时长是否为 0 | Duration.ZERO.isZero → true |
val isPositive: Boolean |
Boolean |
判断时长是否为正数(>0) | Duration.ofNanos(1).isPositive → true |
val isNegative: Boolean |
Boolean |
判断时长是否为负数(<0) | Duration.ofNanos(-1).isNegative → true |
二、运算方法(Operations)
方法签名 | 返回值 | 说明 | 示例 |
---|---|---|---|
operator fun plus(other: Duration): Duration |
Duration |
加另一个时长 | Duration.ofHours(2) + Duration.ofMinutes(30) → 2h30m |
operator fun minus(other: Duration): Duration |
Duration |
减另一个时长 | Duration.ofHours(3) - Duration.ofMinutes(45) → 2h15m |
fun multipliedBy(scalar: Long): Duration |
Duration |
乘以倍数 | Duration.ofMinutes(10).multipliedBy(2) → 20m |
fun dividedBy(divisor: Long): Duration |
Duration |
除以除数(向下取整) | Duration.ofSeconds(60).dividedBy(3) → 20s |
fun dividedBy(other: Duration): Long |
Long |
除以另一个时长(得到倍数,向下取整) | Duration.ofHours(4).dividedBy(Duration.ofHours(2)) → 2 |
fun negated(): Duration |
Duration |
返回相反符号的时长 | Duration.ofHours(1).negated() → -1h |
fun abs(): Duration |
Duration |
返回时长的绝对值 | Duration.ofHours(-2).abs() → 2h |
三、比较方法(Comparisons)
方法签名 | 返回值 | 说明 | 示例 |
---|---|---|---|
operator fun compareTo(other: Duration): Int |
Int |
比较两个时长:负(<)、0(=)、正(>) | Duration.ofMinutes(30).compareTo(Duration.ofHours(1)) → -1 |
operator fun rangeTo(other: Duration): ClosedRange<Duration> |
ClosedRange<Duration> |
创建时长范围 | val range = Duration.ofHours(1)..Duration.ofHours(2) |
四、静态创建方法(Static Factories)
方法签名 | 返回值 | 说明 | 示例 |
---|---|---|---|
fun ofNanos(nanos: Long): Duration |
Duration |
从纳秒创建时长 | Duration.ofNanos(1_000_000) → 1ms |
fun ofMillis(millis: Long): Duration |
Duration |
从毫秒创建时长 | Duration.ofMillis(1000) → 1s |
fun ofSeconds(seconds: Long): Duration |
Duration |
从秒创建时长 | Duration.ofSeconds(60) → 1m |
fun ofSeconds(seconds: Long, nanoAdjustment: Long): Duration |
Duration |
从秒+纳秒偏移创建 | Duration.ofSeconds(1, 500_000_000) → 1.5s |
fun ofMinutes(minutes: Long): Duration |
Duration |
从分钟创建时长 | Duration.ofMinutes(60) → 1h |
fun ofHours(hours: Long): Duration |
Duration |
从小时创建时长 | Duration.ofHours(24) → 1d |
fun ofDays(days: Long): Duration |
Duration |
从天数创建时长 | Duration.ofDays(1) → 24h |
fun between(startInclusive: Instant, endExclusive: Instant): Duration |
Duration |
计算两个Instant的差 | Duration.between(Instant.parse("2023-01-01T00:00:00Z"), Instant.parse("2023-01-01T01:00:00Z")) → 1h |
fun between(startInclusive: LocalTime, endExclusive: LocalTime): Duration |
Duration |
计算两个LocalTime的差 | Duration.between(LocalTime.of(9,0), LocalTime.of(10,0)) → 1h |
fun parse(text: CharSequence): Duration |
Duration |
从字符串解析时长(如PT1H30M ) |
Duration.parse("PT1H30M") → 1h30m |
五、其他方法(Other)
方法签名 | 返回值 | 说明 | 示例 |
---|---|---|---|
override fun toString(): String |
String |
返回标准化字符串(ISO-8601格式) | Duration.ofMinutes(90).toString() → "PT1H30M" |
说明:
- 所有方法均来自
kotlin.time.Duration
(Kotlin 标准库)及 Java 互操作的java.time.Duration
扩展。 - 示例中
→
表示返回结果的简化描述(非实际返回值的字符串形式)。 - 负数时长的转换(如
inDays
)会向下取整(例如-1.5h
的inHours
为-2
)。
通过这些方法,Duration
可以完整支持时长的创建、转换、运算和比较,适用于所有需要处理时间间隔的场景。