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

标签 datetime go time

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

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/41958170/

相关文章:

mysql - 将时间间隔拆分为 1 小时间隔 mysql

go - 如何在golang中将int转换为bigint?

go - 使用 golang 生成嵌套的 JSON

ruby-on-rails - 在 ruby​​ 假时间中四舍五入到最接近的半小时或小时?

c++ - system_clock 返回负时间 c++

javascript 时间到实际时间

python - 'time' 对象的描述符 'datetime.datetime' 需要参数

php - 如何使用 PHP 更改日期时间格式

android - 如何使用 Joda DateTime 显示荷兰月份

go - 将 10 的幂写成常数