Package google.protobuf

索引

时长

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 字段的符号相同。必须介于 -999999999(含)和 +999999999(含)之间。