You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kotlin协程delay函数时分秒转换方法及Duration调用报错解决

Kotlin协程中简化delay参数的问题

我想在launch函数里使用delay函数,之前一直用xxxL这类数值作为参数,手动换算秒、分钟、小时的系数十分繁琐。有没有办法直接将秒、分钟、小时转换为delay可用的参数?比如:
30秒

delay(30)

1分钟

delay(1)

2小时

delay(2)

我尝试结合delay与Duration使用,写下代码delay(Duration(1.minutes)),但出现错误。我的导入语句如下:

import kotlinx.coroutines.delay
import kotlinx.coroutines.launch
import kotlin.time.Duration
import kotlin.time.Duration.Companion.minutes

错误截图:
错误提示截图

我不知道问题出在哪里。

更新
我应该导入哪个Duration?截图如下:
Duration导入选项截图


解决方案

1. 正确调用方式

你不需要手动实例化Duration,1.minutes本身就是Duration类型,直接传入delay即可:

delay(1.minutes)

2. 导入选择说明

从截图的导入选项来看:

  • kotlin.time.Duration:这是Kotlin标准库提供的Duration,是你需要使用的正确类型
  • java.time.Duration:这是Java的Duration类,与Kotlin协程的delay函数不兼容,请勿选择

确保你的导入语句保持为:

import kotlin.time.Duration
import kotlin.time.Duration.Companion.minutes

同时需确认项目已引入Kotlin时间相关依赖(Gradle项目中,若已添加kotlinx-coroutines-core依赖,通常已包含该支持;也可单独引入kotlin-stdlib-jdk8)。

3. 更多简化写法

除了分钟,还可以直接使用其他时间单位的扩展函数:

delay(30.seconds)  // 延迟30秒
delay(2.hours)     // 延迟2小时
delay(1.days)      // 延迟1天

内容的提问来源于stack exchange,提问作者Compose Learner

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 10:28:33