我有这个约会时间,或类似的东西。
2014-11-17 23:02:03 +0000 UTC
我想将其转换为时间对象,但time.Parse除了以下方面,我无法产生任何输出:
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:
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() 使用以下格式字符串:
Time.String()
"2006-01-02 15:04:05.999999999 -0700 MST"
因此,可以使用它来解析时间,或者使用它Time.Format()来生成可以指定布局的字符串表示形式,以便可以使用相同的布局来解析时间字符串。
Time.Format()
第二轮:
您将时间字符串包含在URL中。该+符号是URL编码中的特殊字符:它表示空格。因此,+gets转换为空间(因此从您的时间字符串中消失了)。使用正确的URL编码!检出net/url包装,然后查看本例。
net/url