为了账号安全,请及时绑定邮箱和手机立即绑定

Golang 在时间格式之间转换

Golang 在时间格式之间转换

Go
慕娘9325324 2023-06-01 16:13:33
我正在尝试解析一个时间字符串,它作为 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.RFC3339Time.String()使用以下格式生成输出:

"2006-01-02 15:04:05.999999999 -0700 MST"

当您尝试从格式解析它时:

RFC3339 = "2006-01-02T15:04:05Z07:00"

显然那是行不通的。


查看完整回答
反对 回复 2023-06-01
?
牧羊人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())


查看完整回答
反对 回复 2023-06-01
  • 2 回答
  • 0 关注
  • 167 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信