我正在通过time.Now()
使用Go创建一个日期,它将其存储在mongoDB中,没有任何问题。日期看起来像2023-02-28T20:10:46.140+00:00
。
然而,当我尝试检索它时,我得到一个错误,内容如下:
{{"code":2, "message":"parsing time \"2023-02-28 20:10:46.14 +0000 UTC\" as \"2006-01-02T15:04:05Z07:00\": cannot parse \" 20:10:46.14 +0000 UTC\" as \"T\"", "details":[]}
它来自这段代码。
createdAt, err := time.Parse(time.RFC3339, blog.CreatedAt.String())
if err != nil {
return nil, err
}
updatedAt, err := time.Parse(time.RFC3339, blog.UpdatedAt.String())
if err != nil {
return nil, err
}
tempBlog := &api.Blog{
Id: blog.ID,
CreatedAt: timestamppb.New(createdAt),
UpdatedAt: timestamppb.New(updatedAt),
我找到了一些有用的文档here和here,并手动添加了解析到Mongo中的时间,但我仍然遇到了这个问题。
我已经尝试了所有的时间格式,但它只是导致了一个不同的错误,无法解析。
建议?
2条答案
按热度按时间2hh7jdfx1#
你的输入格式(2023-02-28 20:10:46.14 +0000 UTC),如你的错误信息所示,不能被time.parse函数识别,因为它不是你在函数中调用的RFC 3339格式。我不使用很多内置函数,但这个'format'函数会给予你你所需要的
结果
如果您需要将其返回到RFC 3339以导出,请使用
它会给予你一个结果
注意,在UTC时间(祖鲁时间)中,RFC 3339不要求仅给予时间修改Z。例如,如果您使用-0700 MST而不是+0000 UTC,则结果将为
lhcgjxsq2#
用于
time.parse
的布局是time.RFC3339
或2006-01-02T15:04:05Z07:00
。我在解析来自Elastic的时间时收到了类似的消息,但通过删除尾随的
07:00
可以解决它。尝试使用自定义布局2006-01-02T15:04:05Z
而不是RFC3339。