我正在创建一个使用 GRPC 和 protobuf 的 Go 应用程序。我的 RPC 服务将获取包含 type 的消息google.protobuf.Timestamp
,对其进行解析并最终将其保存在数据库中或对其执行更多操作。
我对什么被认为是 type 的有效输入感到困惑google.protobuf.Timestamp
。我希望对带有时区偏移的日期时间戳使用以下格式。
2019-02-15T13:00:00+01:00
这是我正在使用的原始文件。
syntax = "proto3"
package example;
import "google/protobuf/timestamp.proto"
service Tester {
rpc ParseDateTimeStamp(TSRequest) returns (TSReply) {}
}
message TSRequest {
google.protobuf.Timestamp dts = 1;
}
message TSReply {
string message = 1;
}
问题是当我向 GRPC 服务器发送包含日期时间戳的消息时。我希望给定*tsbp.Timestamp
的2019-02-15T13:00:00+01:00
日期时间戳的类型是有效的,并给我从纪元开始的适当秒数。GetSeconds()
(从 timestamp.go调用之后)
为上面的示例输入调用ptypes.TimestampString(ts *tspb.Timestamp)
返回1970-01-01T00:00:00Z
。
是否google.protobuf.Timestamp
接受带有 +- 偏移量的日期时间戳?
或者我是否必须将输入输入为 String 类型,然后解析为time.Time
withtime.Format
而不是在 protobuf 中使用时间戳变量类型?如果是这样,你能提供一个例子吗?