Package google.protobuf

Chỉ mục

Thời lượng

Thời lượng thể hiện một khoảng thời gian có dấu hiệu, cố định, được biểu thị bằng số giây và phần nhỏ của giây ở độ phân giải nano giây. Ngày này độc lập với bất kỳ lịch và khái niệm nào như "ngày" hoặc "tháng". Nó có liên quan đến Dấu thời gian ở chỗ sự khác biệt giữa hai giá trị Dấu thời gian là Thời lượng và bạn có thể thêm hoặc trừ Dấu thời gian. Phạm vi khoảng +-10.000 năm.

Ví dụ 1: Thời lượng điện toán từ hai Dấu thời gian trong mã giả.

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

Ví dụ 2: Dấu thời gian điện toán từ Dấu thời gian + Thời lượng trong mã giả.

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;
}
Tên trường Loại Mô tả
seconds int64 Số giây đã ký của khoảng thời gian. Phải từ -315,576,000,000 đến +315,576,000,000 bao gồm.
nanos int32 Các phân số có dấu của giây ở độ phân giải nano giây của khoảng thời gian. Thời lượng dưới một giây được biểu thị bằng trường 0 seconds và trường nanos dương hoặc âm. Trong thời lượng từ một giây trở lên, giá trị khác 0 cho trường nanos phải có cùng dấu với trường seconds. Phải từ -999,999,999 đến +999,999,999 bao gồm.