Índice
Duration
(mensagem)
Duração
Uma duração representa um período assinado de duração fixa, representada como uma contagem de segundos e frações de segundos de resolução de nanossegundos. Ela é independente de agendas e conceitos, como "dia" ou "mês". Ela está relacionada ao carimbo de data/hora porque a diferença entre dois valores é uma duração, e ela pode ser adicionada ou subtraída de um carimbo de data/hora. O intervalo é aproximadamente +-10.000 anos.
Exemplo 1: duração do cálculo de dois carimbos de data/hora em pseudocódigo.
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;
}
Exemplo 2: calcular o carimbo de data/hora usando o carimbo de data/hora + a duração em um pseudocódigo.
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 do campo | Tipo | Descrição |
---|---|---|
seconds |
int64 |
Segundos assinados do intervalo de tempo. Precisa ser de -315.576.000.000 a +315.576.000.000. |
nanos |
int32 |
Frações assinadas de um segundo com resolução de nanossegundos no período. Durações inferiores a um segundo são representadas por um campo seconds de 0 e um campo nanos positivo ou negativo. Para durações de um segundo ou mais, um valor diferente de zero para o campo nanos precisa ser do mesmo sinal que o campo seconds . Precisa ser de -999.999.999 a +999.999.999. |