Indeks
Duration
(komunikat)
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. |