索引
Duration
(消息)
时长
Duration 表示固定长度的有符号时间跨度,以纳秒为单位表示秒数和秒数的小数部分。它与任何日历和概念(如“天”或“月”)无关。它与时间戳相关,因为两个时间戳值之间的差值就是时长,您可以在时间戳中加上或减去该值。范围约为 +-10,000 年。
示例 1:根据伪代码中的两个时间戳计算时长。
Timestamp start = ...;
Timestamp end = ...;
Duration duration = ...;
duration.seconds = end.seconds - start.seconds;
duration.nanos = end.nanos - start.nanos;
if (duration.seconds < 0 && duration.nanos > 0) {
duration.seconds += 1;
duration.nanos -= 1000000000;
} else if (duration.seconds > 0 && duration.nanos < 0) {
duration.seconds -= 1;
duration.nanos += 1000000000;
}
示例 2:根据伪代码中的时间戳 + 时长计算时间戳。
Timestamp start = ...;
Duration duration = ...;
Timestamp end = ...;
end.seconds = start.seconds + duration.seconds;
end.nanos = start.nanos + duration.nanos;
if (end.nanos < 0) {
end.seconds -= 1;
end.nanos += 1000000000;
} else if (end.nanos >= 1000000000) {
end.seconds += 1;
end.nanos -= 1000000000;
}
字段名称 | 类型 | 说明 |
---|---|---|
seconds |
int64 |
时间跨度的带符号秒数。必须介于 -315,576,000,000 到 +315,576,000,000(含)之间。 |
nanos |
int32 |
时间跨度(以纳秒为单位)的带符号分数(秒)。时长不到 1 秒的时长使用 0 seconds 字段和正值或负值 nanos 字段表示。对于 1 秒或更长时间的时长,nanos 字段的非零值必须与 seconds 字段的符号相同。必须介于 -999,999,999(含)到 +999,999,999(含)之间。 |