索引
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 |
以奈秒為單位完成指定時間中,以秒為單位的已簽署分數。如果持續時間不到一秒,必須包含 0 seconds 欄位,以及正數或負數的 nanos 欄位。如果時間長度為一秒以上,nanos 欄位的非零值必須與 seconds 欄位的正負號相同。必須介於 -999,999,999 至 +999,999,999 (含) 之間。 |