一尘不染

如何将 Unix 时间戳解析为 time.Time

go

我正在尝试解析 Unix时间戳,但出现超出范围的错误。这对我来说没有意义,因为布局是正确的(如 Go 文档中所示):

package main

import "fmt"
import "time"

func main() {
    tm, err := time.Parse("1136239445", "1405544146")
    if err != nil{
        panic(err)
    }

    fmt.Println(tm)
}

阅读 177

收藏
2021-11-04

共1个答案

一尘不染

time.Parse函数不处理 Unix 时间戳。相反,您可以使用strconv.ParseInt将字符串解析为int64并使用以下内容创建时间戳time.Unix

package main

import (
    "fmt"
    "time"
    "strconv"
)

func main() {
    i, err := strconv.ParseInt("1405544146", 10, 64)
    if err != nil {
        panic(err)
    }
    tm := time.Unix(i, 0)
    fmt.Println(tm)
}

输出:

2014-07-16 20:55:46 +0000 UTC

Playground: http : //play.golang.org/p/v_j6UIro7a

编辑:

strconv.Atoi改为strconv.ParseInt以避免 int 在 32 位系统上溢出。

2021-11-04