英文:
How can I make Timestamp Protobuff back to my timezone since the github version of timestamp is deprecated?
问题
好的,以下是翻译好的内容:
好的,我刚刚意识到一个问题,当我使用以下命令生成新的 protobuff 文件时:
protoc my_file.proto --go_out=./
我的 .proto 结构看起来像这样:
message MyRequest {
google.protobuf.Timestamp my_time = 1;
}
如果我在2021年左右使用 protoc 命令,我会得到:
import timestamp "github.com/golang/protobuf/ptypes/timestamp"
type MyRequest struct {
MyTime *timestamp.Timestamp `protobuf:"bytes,1,opt,name=my_time,json=myTime,proto3" json:"my_time,omitempty"`
}
但现在我会得到:
import timestamppb "google.golang.org/protobuf/types/known/timestamppb"
type MyRequest struct {
MyTime *timestamppb.Timestamp `protobuf:"bytes,1,opt,name=my_time,json=myTime,proto3" json:"my_time,omitempty"`
}
主要问题是旧的结构以我的时区表示 MyTime,但新的结构将其转换为 UTC+0。有人知道如何解决这个问题吗?
英文:
Alright so I just realized something when I generate new protobuff file using:
protoc my_file.proto --go_out=./
My .proto struct is somehow looks like:
message MyRequest {
google.protobuf.Timestamp my_time = 1;
}
If I use the protoc command somewhere around in 2021 I would get:
import timestamp "github.com/golang/protobuf/ptypes/timestamp"
type MyRequest struct {
MyTime *timestamp.Timestamp `protobuf:"bytes,1,opt,name=my_time,json=myTime,proto3" json:"my_time,omitempty"`
}
But now I 'll get:
import timestamppb "google.golang.org/protobuf/types/known/timestamppb"
type MyRequest struct {
MyTime *timestamppb.Timestamp `protobuf:"bytes,1,opt,name=my_time,json=myTime,proto3" json:"my_time,omitempty"`
}
The main problem is that the old struct presents MyTime in my timezone, but the new one converts it to UTC+0. Anyone know how to solve this problem?
答案1
得分: 1
你可以看到这个链接中调用了.UTC()
方法。
从那个方法中可以看出,你可以创建一个自定义函数来返回你所在时区的时间。
以下是一个示例:
func ForMyTimeZone(x *timestamppb.Timestamp) time.Time {
return time.Unix(int64(x.GetSeconds()), int64(x.GetNanos()))
}
英文:
You can see this method is call .UTC()
method.
Looking from that method, you can create custom function to return time for your time zone.
this is the example :
func ForMyTimeZone(x *timestamppb.Timestamp) time.Time {
return time.Unix(int64(x.GetSeconds()), int64(x.GetNanos()))
}
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论