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

新手上路,请多包涵

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

 package main

import "fmt"
import "time"

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

    fmt.Println(tm)
}

操场

原文由 hey 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 607
2 个回答

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

游乐场: http ://play.golang.org/p/v_j6UIro7a

编辑:

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

原文由 ANisus 发布,翻译遵循 CC BY-SA 3.0 许可协议

您可以直接使用 time.Unix 时间函数将 unix 时间戳转换为 UTC

 package main

import (
  "fmt"
  "time"
)

func main() {
    unixTimeUTC:=time.Unix(1405544146, 0) //gives unix time stamp in utc

    unitTimeInRFC3339 :=unixTimeUTC.Format(time.RFC3339) // converts utc time to RFC3339 format

    fmt.Println("unix time stamp in UTC :--->",unixTimeUTC)
    fmt.Println("unix time stamp in unitTimeInRFC3339 format :->",unitTimeInRFC3339)
}

输出

unix time stamp in UTC :---> 2014-07-16 20:55:46 +0000 UTC
unix time stamp in unitTimeInRFC3339 format :----> 2014-07-16T20:55:46Z

签到 Go Playground:https: //play.golang.org/p/5FtRdnkxAd

原文由 negi Yogi 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题