索引
Duration
(メッセージ)
所要時間
Duration は符号付きの固定長時間範囲で、秒数と小数点以下の秒数(ナノ秒単位)で表現されます。カレンダーおよび「日」や「月」などの概念からは独立した表現です。タイムスタンプ値の差が Duration になるという意味で、Duration はタイムスタンプに関連した表現であり、タイムスタンプとの間で加算および減算が可能です。表現可能な範囲はおよそ +-10,000 年です。
例 1: 2 つのタイムスタンプから Duration を計算する疑似コード
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: タイムスタンプ + Duration からタイムスタンプを計算する疑似コード
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 秒の符号付き小数点以下の秒数。1 秒未満の期間は、0 seconds フィールドと正または負の nanos フィールドで表されます。期間が 1 秒以上の場合、nanos フィールドのゼロ以外の値は seconds フィールドと同じ符号である必要があります。-999,999,999~+999,999,999 の範囲内(境界含む)である必要があります。 |