Timestamp
Seit protobuf 3.0 gibt es einen Nachrichtentyp. So erstellen Sie ihn im Modell:
syntax = "proto3";
import "google/protobuf/timestamp.proto";
message MyMessage {
google.protobuf.Timestamp my_field = 1;
}
timestamp.proto
Die Datei enthält Beispiele für die Verwendung von Timestamp, einschließlich Linux- und Windows-Programmen.
Beispiel 1: Zeitstempel von POSIX berechnen time()
.
Timestamp timestamp;
timestamp.set_seconds(time(NULL));
timestamp.set_nanos(0);
Beispiel 2: Zeitstempel von POSIX berechnen gettimeofday()
.
struct timeval tv;
gettimeofday(&tv, NULL);
Timestamp timestamp;
timestamp.set_seconds(tv.tv_sec);
timestamp.set_nanos(tv.tv_usec * 1000);
Beispiel 3: Zeitstempel aus Win32 berechnen GetSystemTimeAsFileTime()
.
FILETIME ft;
GetSystemTimeAsFileTime(&ft);
UINT64 ticks = (((UINT64)ft.dwHighDateTime) << 32) | ft.dwLowDateTime;
Timestamp timestamp;
timestamp.set_seconds((INT64) ((ticks / 10000000) - 11644473600LL));
timestamp.set_nanos((INT32) ((ticks % 10000000) * 100));