从github.com/golang/protobuf/ptypes/timestamp
的导入提供了Protobuf的本机时间戳实现,可以在您的protobuf定义内部使用以表示时间。仔细查看提供的timestamp.pb.go
文件,看起来它像这样生成了一些struct
:
type Timestamp struct {
Seconds int64 `protobuf:"varint,1,opt,name=seconds,proto3" json:"seconds,omitempty"`
Nanos int32 `protobuf:"varint,2,opt,name=nanos,proto3" json:"nanos,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
timestamp.pb.go
内有一些评论示例,但我不太理解。
要将其与go的time
library结合使用。我不确定如何在Timestamp
内设置字段。我假设这两种类型之间的“转换”并不困难,但是我对Go和protobuf不熟悉。任何帮助将不胜感激。
答案 0 :(得分:1)
您必须手动将其转换为time.Time。
对于非指针值:
if !u.Timestamp.IsZero() {
timestamp, _ := ptypes.TimestampProto(u.Timestamp)
up.Timestamp = timestamp
}
对于指针值:
if u.Timestamp != nil {
timestamp, _ := ptypes.TimestampProto(*u.Timestamp)
up.Timestamp = timestamp
}