我创建了一个结构,它包含两个time.Time格式的字段,用 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 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
它执行没有错误。当我试图读取返回的结构时,
我的阅读代码:
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\""}
顺便说一句,正如我所说,更新完成时没有错误(查询执行时没有错误)。那我该怎么办呢?