Indice
Duration
(messaggio)
Durata
Una durata rappresenta un intervallo di tempo firmato a lunghezza fissa, rappresentato come un conteggio di secondi e frazioni di secondi con una risoluzione in nanosecondi. È indipendente da qualsiasi calendario e concetti come "giorno" o "mese". È correlato al timestamp in quanto la differenza tra due valori di timestamp è una durata e può essere aggiunta o sottratta da un timestamp. L'intervallo è di circa +-10.000 anni.
Esempio 1: durata di calcolo da due timestamp nello pseudocodice.
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;
}
Esempio 2: timestamp di calcolo da timestamp + durata nello pseudocodice.
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;
}
Nome campo | Tipo | Descrizione |
---|---|---|
seconds |
int64 |
Secondi firmati dell'intervallo di tempo. Deve essere compreso tra -315.576.000.000 e +315.576.000.000 inclusi. |
nanos |
int32 |
Frazioni di secondo firmate con una risoluzione in nanosecondi dell'intervallo di tempo. Le durate inferiori a un secondo sono rappresentate con un campo seconds pari a 0 e un campo nanos positivo o negativo. Per una durata di almeno un secondo, un valore diverso da zero per il campo nanos deve avere lo stesso segno del campo seconds . Deve essere compreso tra -999.999.999 e +999.999.999 inclusi. |