Package google.protobuf

Indeks

Durasi

Durasi mewakili rentang waktu tetap yang ditandatangani yang direpresentasikan sebagai jumlah detik dan pecahan detik pada resolusi nanodetik. Ini tidak bergantung pada kalender dan konsep apa pun seperti "hari" atau "bulan". Hal ini berkaitan dengan Stempel waktu karena perbedaan antara dua nilai Stempel Waktu adalah Durasi dan dapat ditambahkan atau dikurangi dari Stempel Waktu. Rentangnya sekitar +-10.000 tahun.

Contoh 1: Menghitung Durasi dari dua Stempel Waktu dalam kode semu.

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

Contoh 2: Menghitung Stempel Waktu dari Stempel Waktu + Durasi dalam kode semu.

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;
}
Nama kolom Jenis Deskripsi
seconds int64 Detik yang ditandatangani dari rentang waktu tersebut. Harus dari -315.576.000.000 hingga +315.576.000.000.
nanos int32 Bagian bertanda detik dalam resolusi nanodetik dari rentang waktu tersebut. Durasi kurang dari satu detik diwakili dengan kolom seconds 0 dan kolom nanos positif atau negatif. Untuk durasi satu detik atau lebih, nilai bukan nol untuk kolom nanos harus memiliki tanda yang sama dengan kolom seconds. Harus dari -999.999.999 hingga +999.999.999 inklusif.