Index
Duration
(Meldung)
Dauer
Eine Dauer stellt eine vorzeichenbehaftete Zeitspanne dar, die als Anzahl von Sekunden und Bruchteilen von Sekunden mit Nanosekundenauflösung dargestellt wird. Er ist unabhängig von Kalendern und Begriffen wie "Tag" oder "Monat". Der Unterschied zwischen zwei Zeitstempelwerten ist eine Dauer und kann zu einem Zeitstempel addiert oder davon subtrahiert werden. Der Bereich beträgt ungefähr +-10.000 Jahre.
Beispiel 1: Dauer aus zwei Zeitstempeln in Pseudocode berechnen.
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;
}
Beispiel 2: Zeitstempel aus Zeitstempel + Dauer in Pseudocode berechnen.
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;
}
Feldname | Typ | Beschreibung |
---|---|---|
seconds |
int64 |
Signierte Sekunden des Zeitraums. Muss zwischen -315.576.000.000 und +315.576.000.000 liegen (jeweils einschließlich). |
nanos |
int32 |
Vorzeichenbehaftete Sekundenbruchteile mit Nanosekundenauflösung der Zeitspanne. Eine Dauer von weniger als einer Sekunde wird mit einem seconds -Feld von 0 und einem positiven oder negativen nanos -Feld angegeben. Für eine Dauer von mindestens einer Sekunde muss ein Wert ungleich null für das Feld nanos das gleiche Vorzeichen haben wie das Feld seconds . Muss zwischen -999.999.999 und +999.999.999 liegen. |