Package google.protobuf

Indeks

Durasi

Durasi mewakili rentang waktu berdurasi tetap yang ditandatangani, yang direpresentasikan sebagai jumlah detik dan sepersekian detik pada resolusi nanodetik. Tanggal ini terpisah dari kalender dan konsep apa pun seperti "hari" atau "bulan". Hal ini terkait 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: Hitung 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: Hitung 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. Harus dari -315.576.000.000 hingga +315.576.000.000 inklusif.
nanos int32 Sepersekian detik yang ditandatangani pada resolusi nanodetik dari rentang waktu. Durasi kurang dari satu detik direpresentasikan dengan kolom 0 seconds 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.