gpt4 book ai didi

datetime - 将 UTC 字符串转换为时间对象

转载 作者:IT王子 更新时间:2023-10-29 00:37:40 27 4
gpt4 key购买 nike

我有这个日期时间,或者类似的东西。

2014-11-17 23:02:03 +0000 UTC

我想将其转换为时间对象,但我无法从 time.Parse 生成任何输出,除了:

0001-01-01 00:00:00 +0000 UTC

我试过这些布局:

time.RFC3339
0001-01-01 00:00:00 0000 UTC
2016-10-10
time.UnixDate

还有一些 - 没有一个起作用。

这就是我调用 parse 的方式:

updatedAt, err := time.Parse(time.UnixDate, updatedAtVar)

如何从字符串创建时间对象?

最佳答案

很可能你使用了错误的布局,并且你没有检查返回的错误。

布局必须是这个日期/时间,您输入时间的格式是:

Mon Jan 2 15:04:05 -0700 MST 2006

查看这段工作代码:

layout := "2006-01-02 15:04:05 -0700 MST"
t, err := time.Parse(layout, "2014-11-17 23:02:03 +0000 UTC")
fmt.Println(t, err)

输出(在 Go Playground 上尝试):

2014-11-17 23:02:03 +0000 UTC <nil>

编辑:

在您的问题中,您在输入时间中包含了一个 + 符号(作为时区偏移的一部分),但您在使用其他格式的时间时遇到了错误。

Time.String()使用以下格式字符串:

"2006-01-02 15:04:05.999999999 -0700 MST"

所以要么用这个来解析时间,要么用Time.Format()生成您可以在其中指定布局的字符串表示形式,这样您就可以使用相同的布局来解析时间字符串。

第二轮:

您在 URL 中包含您的时间字符串。 + 符号是 URL 编码中的一个特殊字符:它表示空格。因此 + 被转换为空格(因此它从您的时间字符串中消失)。使用正确的 URL 编码!查看net/url包,和this example .

关于datetime - 将 UTC 字符串转换为时间对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38798043/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com