为了账号安全,请及时绑定邮箱和手机立即绑定

为什么JSON绑定中时间格式会发生变化?

为什么JSON绑定中时间格式会发生变化?

Go
拉丁的传说 2022-08-24 20:20:33
我创建了一个结构,它包含两个时间。时间格式的字段,以 json 标记命名:start_time和end_time。type MyStruct struct {   StartTime  time.Time `json:"start_time"`   EndTime    time.Time `json:"end_time"`}当我尝试使用gin框架通过HTTP发送PUT请求以更新这些值时,我发送的时间格式在发送的结构中发生了变化。我发送的内容:curl    -X  PUT   -H  'Content-Type: application/json'http://my_address -d '{"start_time": "2021-04-27T22:24:31Z","end_time": "2021-11-01T22:24:31Z"}'它接收的内容:start_time="2021-04-27 22:24:31 +0000 UTC",end_time="2021-11-01 22:24:31 +0000 UTC",另一方面,我将结构保存在沙发库中,作为查询的返回值,我正在发回文档(我的结构):我的查询:Update BucketName as eset start_time="2021-04-27 22:24:31 +0000 UTC",end_time="2021-11-01 22:24:31 +0000 UTC" where ( my document equality condition)returning e并且它执行时没有错误。当我尝试读取返回的结构时,我的代码来阅读它:var s domain.MyStructSample //                                                                                                                   err = result.One(&s)    if err != nil {      if err == gocb.ErrNoResult {        return nil, errors.New("there is no result")      }      logger.ZSLogger.Errorf("error on update one item from my struct with error :%s", err)      return nil, err    }      gocb在这些时间项上生成错误,这是错误:"message":"error on update one item from my struct  with error :parsing time \"\"2021-11-01 22:24:31 +0000 UTC\"\" as \"\"2006-01-02T15:04:05Z07:00\"\": cannot parse \" 22:24:31 +0000 UTC\"\" as \"T\""}顺便说一句,正如我所说,更新是在没有错误的情况下完成的(查询执行没有错误)。那么我该怎么办?
查看完整描述

1 回答

?
绝地无双

TA贡献1946条经验 获得超4个赞

您是如何生成此查询的:


Update BucketName as e

set start_time="2021-04-27 22:24:31 +0000 UTC",

end_time="2021-11-01 22:24:31 +0000 UTC" where ( my document equality condition)

returning e

正如错误所说,存储在couchbase中的时间数据应该采用RFC3339()格式,而不是默认格式,所以也许你应该用quer插入数据:2006-01-02T15:04:05Z07:002006-01-02 15:04:05 -0700 MST


Update BucketName as e

set start_time="2021-04-27T22:24:31Z07:00",

end_time="2021-11-01T22:24:31Z07:00" where ( my document equality condition)

returning e

如果您在格式化时间时遇到问题,请阅读文档 https://golang.cafe/blog/golang-time-format-example.html


而且,正如@MrFuppes注释的那样,如果您需要自定义JSON输出格式,请阅读此如何在传出JSON中格式化时间戳


查看完整回答
反对 回复 2022-08-24
  • 1 回答
  • 0 关注
  • 155 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号