猿问

Golang 在时间格式之间转换

我正在尝试解析一个时间字符串,它作为 JSON 在网络上传输。在下面的代码中,我只是在试验时间解析作为其中的一部分:


currentTime := time.Now().String()

//currentTime has the time

t1, _ := 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


我错过了什么?


慕娘9325324
浏览 169回答 2
2回答

至尊宝的传说

首先,您要省略 返回的错误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

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())
随时随地看视频慕课网APP

相关分类

Go
我要回答