Go 中的日期解析
使用 time.Parse 的复杂 API,在 Go 中解析时间戳可能是一项艰巨的任务。让我们深入研究一下尝试解析类似于 tar 生成的时间戳时遇到的常见问题,例如 '2011-01-19 22:15'。
解析问题
以下代码片段失败,并出现错误“解析时间”2011-01-19 22:15": 月份超出范围":
package main import ( "fmt" "time" ) func main() { var time, error = time.Parse("2011-01-19 22:15", "2011-01-19 22:15") if error != nil { fmt.Println(error.String()) return } fmt.Println(time) }
理解错误
错误消息表明提供给 time.Parse 的格式字符串是期望的月份值介于 1 和 12 之间,而提供的时间戳包含一月(用 01 表示),这是第一个
解决问题
要解决此问题,我们需要自定义格式字符串以正确解释时间戳。参考 Go time 包的文档,我们发现以下说明:
“布局中使用的标准时间是:
Mon Jan 2 15:04:05 MST 2006 (MST是 GMT-0700)
要定义您自己的格式,请写下您的标准时间格式
相应地修改格式字符串,我们有:
package main import ( "fmt" "time" ) func main() { t, err := time.Parse("2006-01-02 15:04", "2011-01-19 22:15") if err != nil { fmt.Println(err) return } fmt.Println(t) }
此代码将输出:“2011-01-19 22:15:00 0000 UTC”。
通过遵循文档中提供的指南,我们能够自定义格式字符串以成功解析所需的时间戳格式。
以上是如何在 Go 的 time.Parse 函数中正确解析类似 Tar 的时间戳?的详细内容。更多信息请关注PHP中文网其他相关文章!