我正在嘗試解析一個時間字符串,它作為 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 關注
- 235 瀏覽
添加回答
舉報
0/150
提交
取消