Индекс
-
Duration
(сообщение)
Продолжительность
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 включительно. |