我有这个日期时间,或者看起来像它的东西.
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
编辑:
在您的问题中,您+
在输入时间中包含一个符号(作为区域偏移的一部分),但是您有其他格式的时间错误.
Time.String()
使用以下格式字符串:
"2006-01-02 15:04:05.999999999 -0700 MST"
因此要么使用它来解析时间,要么使用它Time.Format()
来生成字符串表示,您可以在其中指定布局,因此您可以使用相同的布局来解析时间字符串.
第二轮:
您将时间字符串包含在URL中.该+
标志是在URL编码特殊字符:它指的空间.因此+
转换为空格(因此它会从您的时间字符串中消失).使用正确的URL编码!查看net/url
包,以及此示例.