我正在尝试解析一个时间字符串,它作为 JSON 在网络上传输。在下面的代码中,我只是在试验时间解析作为其中的一部分:currentTime := time.Now().String()//currentTime has the timet1, _ := time.Parse(time.RFC3339, currentTime)fmt.Println(t1.String())最后一行破坏了时间并产生输出:0001-01-01 00:00:00 +0000 UTC请参阅此 GoPlayground:https://play.golang.org/p/Q_G_qYcnaHP我错过了什么?
2 回答
至尊宝的传说
TA贡献1789条经验 获得超10个赞
首先,您要省略 返回的错误time.Parse()
。永远不要遗漏错误。
如果打印错误:
currentTime := time.Now().String()
t1, err := time.Parse(time.RFC3339, currentTime)
fmt.Println(err)
fmt.Println(t1.String())
输出(在Go Playground上尝试):
parsing time "2009-11-10 23:00:00 +0000 UTC m=+0.000000001" as "2006-01-02T15:04:05Z07:00": cannot parse " 23:00:00 +0000 UTC m=+0.000000001" as "T" 0001-01-01 00:00:00 +0000 UTC
问题是Time.String()
生成的文本表示形式与 指定的格式不同time.RFC3339
。Time.String()
使用以下格式生成输出:
"2006-01-02 15:04:05.999999999 -0700 MST"
当您尝试从格式解析它时:
RFC3339 = "2006-01-02T15:04:05Z07:00"
显然那是行不通的。
牧羊人nacy
TA贡献1862条经验 获得超7个赞
String returns the time formatted using the format string
"2006-01-02 15:04:05.999999999 -0700 MST"
如果您是 golang 的新手,您可能想知道正确的方法。
方法如下:
formatstr:="2006-01-02 15:04:05.999999999 -0700 MST"
currentTime := time.Now().String()
t1, _ := time.Parse(formatstr, currentTime)
fmt.Println(t1.String())
- 2 回答
- 0 关注
- 167 浏览
添加回答
举报
0/150
提交
取消