Skip to Content

时间值(Duration)

数字后面直接跟时间单位,就是一个时间值(Duration)。单位五种:us、ms、s、min、hr,大小写不敏感,数字可以带小数(2.0s 合法)。

print(500ms, 1.5min, 2hr, 1us); print(30s + 1s); print(1min - 30s); print(30s < 1min, 30s == 30s);
500ms 1.5min 2hr 1us 31s 30s True True

print 打时间值会自动选择可读性最好的单位:能打两分钟就不会打成 120s。

print(90s + 30s); print(45min + 45min);
2min 1.5hr

乘除

时间值也支持乘除:乘一个数或除以一个数都可以(30s * 2 得 1min,1.5min / 3 得 30s)。除以 0 会直接报运行期错误,和整数除零一样。

duration 关键字

类型名 duration 是语言内建的软关键字:

func Halve(d: duration) -> duration { return d / 2; } print(Halve(90s), (0s - 30s).Abs()); print(duration.FromSeconds(2.0)); print(duration.Min(30s, 90s));
45s 30s 2s 30s
  • duration 是软关键字:自己声明的同名类型或局部名正常优先,不冲突。
  • 静态工厂 duration.FromSeconds(2.0) 从数值构时长。成员面还有 duration.Min/Max(a, b) 与 d.Abs()。
  • 字面量编译期折叠为 duration。

注意

  • duration 与整数/浮点之间没有隐式转换:val n: int = 30s; 报 MS3101。
  • 单位解析按最长匹配:30seconds 不会把错误拼写解析为 30s,duration 后缀优先于数值后缀。
  • 算术与比较走 Time 模块的运算符重载,实参失配报 MS3104。
  • 时长只有大小没有起点,要表达「某个时刻」另有 DateTime,见异步部分的页面。
最后更新于 2026年10月7日