Package google.protobuf

Índice

Duração

Uma Duration representa um período de tempo com comprimento fixo representado como uma contagem de segundos e frações de segundos na resolução de nanossegundos. Ele é independente de calendários e conceitos como "dia" ou "mês". Está relacionado ao carimbo de data/hora em que a diferença entre dois valores de carimbo de data/hora é uma duração e pode ser adicionada ou subtraída de um carimbo de data/hora. O intervalo é de aproximadamente +-10.000 anos.

Exemplo 1: calcular a duração 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 carimbo de data/hora de carimbo de data/hora + duração em 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 período. Precisa ser de -315.576.000.000 a +315.576.000.000.
nanos int32 Frações assinadas de um segundo na resolução em nanossegundos do período. Durações inferiores a um segundo são representadas com um campo seconds 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 ter o mesmo sinal que o campo seconds. O valor precisa ser de -999.999.999 a +999.999.999.