Chỉ mục
Duration
(thông báo)
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. |