首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >GOLANG使用LocalDateTime而不是DateTime

GOLANG使用LocalDateTime而不是DateTime
EN

Stack Overflow用户
提问于 2022-01-11 11:52:30
回答 1查看 299关注 0票数 1

我正在使用golang开发一个中间件。我正在使用REST-API,它以LocalDateTime的形式返回日期(例如"created":"2022-01-09T00:00:00“),它应该被映射到一个带有数据类google/protobuf/timestamp.proto的原型消息中,因为我们不想在前端进行转换。但显然timestamp.proto只支持带有时区的DateTime (类似于“创建”:“2022-01-09T00:00:00Z.”)但由于它是我正在消费的外部API,我不能将它们的数据类型更改为DateTime。有没有人知道如何找到优雅的解决方案,而不需要手动完成完整的映射/解压缩过程?

这就是原型消息: google.protobuf.Timestamp created =7 json_name = "created";

这是我们使用的unmashaller : err = protojson.Unmarshal(body,protoMessageClass)

这就是我得到的错误:错误:proto:(行.):无效的google.protobuf.Timestamp值“2021-12-07T00:00:00”

EN

回答 1

Stack Overflow用户

发布于 2022-01-11 18:36:59

首先,将以字符串形式接收的时间转换为time.Time对象:

代码语言:javascript
运行
复制
t, err := time.Parse("2006-01-02T15:04:05", val)

这里,"2006-01-02T15:04:05"表示您期望的布局。

然后可以使用时间戳b内置函数从time.Time对象创建protobuf时间戳:

代码语言:javascript
运行
复制
tpb := timestamppb.New(t)

如果需要相反的操作,可以从timestampb.Timestamp类型使用timestampb.Timestamp类型的format,然后使用time.Time对象中的format来生成字符串。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70666340

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档