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