考虑以下示例:
package main
import (
"fmt"
"time"
)
func main() {
fmt.Println(time.Parse(time.RFC3339, time.RFC3339))
}
输出为:
0001-01-01 00:00:00 +0000 UTC parsing time "2006-01-02T15:04:05Z07:00": extra text: 07:00
为什么time.Parse()无法将布局作为值处理?这里缺少什么?
更新:截断时区值(但不能用“ Z”分隔时区的值)可以解决此问题:
fmt.Println(time.Parse(time.RFC3339, "2015-09-15T11:50:00Z"))
使用time.RFC3339作为布局字符串时,为什么time.Parse()无法处理时区信息?
http://play.golang.org/p/p3fHfJNHVK
更新: JimB的答案使我阅读了RFC3339,发现以下示例进一步阐明了这些示例:
这是Internet日期/时间格式的一些示例。
1985-04-12T23:20:50.52Z
这表示1985年4月12日23时(UTC)之后20分50.52秒。
1996-12-19T16:39:57-08:00
这表示1996年12月19日第16个小时之后的39分57秒,与UTC(太平洋标准时间)的时差为-08:00。请注意,这等效
1996-12-20T00:39:57Z
于UTC。
该time.RFC3339
格式是在格式字符串本身是无效的时间的情况下。你不能有一个Z
和按时间序列的偏移,但格式字符串有两种,因为该规范可以包含两种类型的时区规范。
这两个都是有效的RFC3339时间:
"2015-09-15T14:00:12-00:00"
"2015-09-15T14:00:13Z"
时间包需要能够使用相同的RFC3339格式字符串来解析它们。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句