时间值(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 Trueprint 打时间值会自动选择可读性最好的单位:能打两分钟就不会打成 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
30sduration是软关键字:自己声明的同名类型或局部名正常优先,不冲突。- 静态工厂
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日
