使用时间戳时,通常会遇到标准 Unix 纪元时间戳以外的格式。例如,tar 生成格式为 2011-01-19 22:15 的时间戳。为了在 Go 中解析此类时间戳,我们求助于 time.Parse 函数。
但是,只需调用 time.Parse("2011-01-19 22:15", "2011-01-19 22:15 ") 将导致错误:“解析时间 2011-01-19 22:15: 月份超出范围”。要理解原因,我们需要深入研究 time.Parse 函数的非常规 API。
格式化字符串怪癖
time.Parse 函数需要一个指定格式字符串如何解释输入时间戳。出于我们的目的,我们使用 2006-01-02 15:04 格式。此字符串遵循 Go time 包文档中规定的约定:
To定义我们自己的格式,我们只需要指定标准格式的元素如何在我们的自定义格式中出现。例如,在我们的例子中,结果格式将是 2006-01-02 15:04。
解析时间戳
使用我们的格式化字符串,我们现在可以解析时间戳:
import "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) }
这将正确解析时间戳并显示结果time.时间对象。
以上是如何在 Go 中正确解析非标准日期和时间?的详细内容。更多信息请关注PHP中文网其他相关文章!