首页 >后端开发 >Golang >如何在 Go 的 time.Parse 函数中正确解析类似 Tar 的时间戳?

如何在 Go 的 time.Parse 函数中正确解析类似 Tar 的时间戳?

DDD
DDD原创
2024-12-09 07:32:06714浏览

How to Correctly Parse Tar-like Timestamps in Go's `time.Parse` Function?

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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn