Package google.protobuf

فهرست مطالب

مدت زمان

مدت زمان نشان دهنده یک بازه زمانی مشخص و با طول ثابت است که به صورت شمارش ثانیه و کسری از ثانیه در وضوح نانوثانیه نمایش داده می شود. مستقل از هر تقویم و مفاهیمی مانند "روز" یا "ماه" است. از آنجایی که تفاوت بین دو مقدار Timestamp یک مدت زمان است و می توان آن را از یک Timestamp اضافه یا کم کرد، با Timestamp مرتبط است. برد تقریباً +10000 سال است.

مثال 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 + Duration در شبه کد محاسبه کنید.

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+ باشد.