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