Package google.protobuf

Indeks

Czas trwania

Czas trwania reprezentuje podpisany przedział czasu o stałej długości wyrażony jako liczba sekund i ułamków sekund w rozdzielczości nanosekund. Niezależne jest od kalendarza i koncepcji, takich jak „dzień” czy „miesiąc”. Opiera się na sygnaturze czasowej, ponieważ różnica między 2 wartościami sygnatury czasowej to czas trwania. Można ją dodać lub odjąć od sygnatury czasowej. Zakres wynosi około -10 000 lat.

Przykład 1: obliczenie czasu trwania z 2 sygnatur czasowych w pseudokodu

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 obliczeń z sygnaturą czasową + czas trwania w pseudokodu.

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 Podpisano sekundy. Musi mieścić się w zakresie od -315 576 000 000 do +315 576 000 000 włącznie.
nanos int32 Podpisane ułamki sekundy w rozdzielczości nanosekundy w danym okresie. Czasy trwania krótsze niż 1 sekunda są przedstawiane w polu 0 seconds i dodatnim lub ujemnym polu nanos. Jeśli czas trwania wynosi co najmniej 1 sekundę, wartość inna niż zero w polu nanos musi być taka sama jak w polu seconds. Musi mieścić się w zakresie od -999 999 999 do +999 999 999 włącznie.