如何设置 google.protobuf.Timestamp 为空?

How to set google.protobuf.Timestamp to null?

如何在 Google ProtoBuf 中表示空时间戳?

我正在从 postgreSQL 数据库中读取 DateTime(其中一些为空)到 protobuf TimeStamps 中。

message test {
  google.protobuf.TimestampValue TransactionTime =1;
}

很遗憾,没有google.protobuf.TimestampValue这样的动物。

非常感谢任何帮助。

TIA

正如@JayantSeth 指出的那样,您应该使用 google.protobuf.Timestamp

由于 Protobuf 禁止将字段设置为 null,您可以使用默认值在您的应用程序中显示 nullmessage Timestamp中有两个字段:

message Timestamp {
  // Represents seconds of UTC time since Unix epoch
  // 1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z to
  // 9999-12-31T23:59:59Z inclusive.
  int64 seconds = 1;

  // Non-negative fractions of a second at nanosecond resolution. Negative
  // second values with fractions must still have non-negative nanos values
  // that count forward in time. Must be from 0 to 999,999,999
  // inclusive.
  int32 nanos = 2;
}

类型int64int32的默认值都是0。因此,如果从 Postgres 读取的某些值是 null,那么您可以将其设置为 0。

Timestamp timestamp;
timestamp.set_seconds(0);
timestamp.set_nanos(0);

并且在您的应用程序中,您可以将 timestamp(0) 视为 null