Protobuf 中的 timestamp 与 Go time 的转换

在使用 GRPC 时,经常用到时间,如何将 protobuf 中的 timestamp 与 go 中的 time 进行转换,直接影响平时开发的效率

通过查看 protobuf 源码包中的方法,找到两组方法用于 protobuf 中的 timestamp 与 go 中的 time 进行相互转换

package main

import (
	"fmt"
	"time"

	"github.com/golang/protobuf/ptypes"
	"github.com/golang/protobuf/ptypes/timestamp"
)


func main()  {
	var timeProto *timestamp.Timestamp
	var timeGo time.Time

	timeProto = ptypes.TimestampNow()
	fmt.Println(timeProto) // seconds:1587894893  nanos:853238000
	timeGo = time.Now()
	fmt.Println(timeGo) // 2020-04-26 17:54:53.853474 +0800 CST m=+0.000831812

	timeGo, err := ptypes.Timestamp(timeProto)
	if err != nil {
		fmt.Println(err)
	}
	fmt.Println(timeGo) // 2020-04-26 09:54:53.853238 +0000 UTC

	timeProto, err = ptypes.TimestampProto(timeGo)
	if err != nil {
		fmt.Println(err)
	}
	fmt.Println(timeProto) // seconds:1587894893  nanos:853238000

	str := ptypes.TimestampString(timeProto)
	fmt.Println(str) // 2020-04-26T09:54:53.853238Z
}

详细解读请点击连接查看
【源码阅读】 protobuf 中的 timestamp 包

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值