Golang:如何将 time.Time 转换为 Protobuf 时间戳?

问题描述 投票:0回答:2

我在 Golang

10-30 00:49:07.1236
中有一个 time.Time 变量,需要转换为 Go Protobuf timestamp.Timestamp。知道可以使用哪些函数来完成此任务吗?还是我看问题的角度不对?

go timestamp protocol-buffers unix-timestamp
2个回答
19
投票

请参阅

New
中的
Timestamp.AsTime
timestamppb

这些支持与

time.Time
Timestamp

之间的转换

-4
投票

下面的代码将给出转换时间。时间到protobuf timestamppb格式

import "google.golang.org/protobuf/types/known/timestamppb"
timeNow := time.Now()
timestamp := timestamppb.Timestamp{
    Seconds: timeNow.Unix(),
    Nanos:   int32(timeNow.Nanosecond()),
}
fmt.Printf("as timestamp %+v\n", timestamp)
fmt.Printf("as time.Time %+v\n", timestamp.AsTime().Local())

输出如下所示:

as timestamp {state:{NoUnkeyedLiterals:{} DoNotCompare:[] DoNotCopy:[] atomicMessageInfo:<nil>} sizeCache:0 unknownFields:[] Seconds:1694773177 Nanos:777135000}
as time.Time 2023-09-15 15:49:37.777135 +0530 IST
最新问题
© www.soinside.com 2019 - 2024. All rights reserved.