Package google.protobuf

Индекс

Продолжительность

Duration представляет собой подписанный промежуток времени фиксированной длины, представленный в виде количества секунд и долей секунд с разрешением в наносекунды. Он не зависит ни от какого календаря и таких понятий, как «день» или «месяц». Это связано с меткой времени в том, что разница между двумя значениями метки времени представляет собой продолжительность, и ее можно добавить или вычесть из метки времени. Диапазон составляет примерно +-10 000 лет.

Пример 1. Вычисление продолжительности по двум временным меткам в псевдокоде.

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;
}

Пример 2. Вычисление временной метки из временной метки + длительность в псевдокоде.

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;
}
Имя поля Тип Описание
seconds int64 Секунды со знаком промежутка времени. Должно быть от -315 576 000 000 до +315 576 000 000 включительно.
nanos int32 Доли секунды со знаком при наносекундном разрешении промежутка времени. Продолжительность менее одной секунды представлена ​​полем 0 seconds и положительным или отрицательным полем nanos . Для длительности в одну секунду и более ненулевое значение поля nanos должно иметь тот же знак, что и поле seconds . Должно быть от -999 999 999 до +999 999 999 включительно.