处理持续时间
A duration 类型表示带有纳秒精度的时间长度。
类型名称: duration
持续时间语法
持续时间字面量包含整数和单位说明符。
Flux 支持以下单位说明符:
ns: 纳秒us: 微秒ms: 毫秒s: 秒m: 分钟h: 小时d: 天w: 周mo: 日历月份y: 日历年
1ns // 1 nanosecond
1us // 1 microsecond
1ms // 1 millisecond
1s // 1 second
1m // 1 minute
1h // 1 hour
1d // 1 day
1w // 1 week
1mo // 1 calendar month
1y // 1 calendar year
3d12h4m25s // 3 days, 12 hours, 4 minutes, and 25 seconds
在持续时间文字中不要包含前导零
持续时间字面量的整数部分不应包含前导零。前导零会被解析为单独的整数字面量。 例如:
01m // parsed as 0 (integer literal) and 1m (duration literal)
02h05m // parsed as 0 (integer literal), 2h (duration literal), 0 (integer literal), and 5m (duration literal)
将数据类型转换为持续时间
使用duration()函数将以下基本类型转换为持续时间:
- string: 作为持续时间字符串解析并转换为持续时间。
- int:解析为纳秒并转换为持续时间。
- uint:解析为纳秒并转换为持续时间。
duration(v: "1h30m")
// Returns 1h30m
duration(v: 1000000)
// Returns 1ms
duration(v: uint(v: 3000000000))
// Returns 3s
Flux不支持持续时间列。
操作持续时间
对持续时间进行算术运算
要执行像添加、减去、乘以或除以持续时间值这样的操作:
- 使用
int()或uint()将持续时间值转换为数值。 - 使用 算术运算符 对数值进行操作。
- 使用
duration()将计算得到的数值转换为持续时间。
duration(v: int(v: 6h4m) + int(v: 22h32s))
// Returns 1d4h4m32s
duration(v: int(v: 22h32s) - int(v: 6h4m))
// Returns 15h56m32s
duration(v: int(v: 32m10s) * 10)
// Returns 5h21m40s
duration(v: int(v: 24h) / 2)
// Returns 12h
将持续时间添加到时间值
- 导入
date包。 - 使用
date.add()为时间值添加持续时间。
import "date"
date.add(d: 1w, to: 2021-01-01T00:00:00Z)
// Returns 2021-01-08T00:00:00.000000000Z
从时间值中减去一个持续时间
- 导入
date包。 - 使用
date.sub()从一个时间值中减去一个持续时间。
import "date"
date.sub(d: 1w, from: 2021-01-01T00:00:00Z)
// Returns 2020-12-25T00:00:00.000000000Z