Package google.protobuf

索引

時間長度

「時間長度」代表經過簽署的固定時間長度,代表以奈秒解析度為秒數和秒數的分數。不受任何日曆與概念影響,例如「日」或「月」。與時間戳記相關範圍約為 +-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 秒的值為 seconds 的 0 欄位,以及正或負的 nanos 欄位。時間長度在一秒以上的值時,nanos 欄位的非零值必須與 seconds 欄位具有相同的符號。必須介於 -999,999,999 到 +999,999,999 之間 (含首尾值)。