Package google.protobuf

Indeks

Czas trwania

Czas trwania reprezentuje podpisany, stały przedział czasu wyrażony jako liczba sekund i ułamków sekund w rozdzielczości nanosekundy. Jest on niezależny od kalendarza i pojęć takich jak „dzień” czy „miesiąc”. Wiąże się to z tym, że różnica między 2 wartościami sygnatury czasowej jest czasem trwania, którą można dodać do sygnatury czasowej lub od niej odjąć. Zakres wynosi około +-10 000 lat.

Przykład 1: czas trwania mocy obliczeniowej na podstawie dwóch sygnatur czasowych w pseudokodzie.

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;
}

Przykład 2. Sygnatura czasowa obliczeniowa z sygnatury czasowej + czas trwania w pseudokodzie.

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;
}
Nazwa pola Typ Opis
seconds int64 Podpisane sekundy z przedziału czasu. Musi mieścić się w przedziale od -315 576 000 000 do +315 576 000 000 włącznie.
nanos int32 Podpisane ułamki sekundy w rozdzielczości nanosekundowej zakresu czasu. Czasy krótszy niż 1 sekunda są przedstawiane za pomocą pola seconds o wartości 0 i wartości dodatniej lub ujemnej nanos. Jeśli czas trwania wynosi co najmniej 1 sekundę, wartość inna niż 0 w polu nanos musi być taki sam jak w polu seconds. Musi mieścić się w przedziale od -999 999 999 do +999 999 999 włącznie.