首页 >后端开发 >Golang >如何正确将 Unix 时间戳转换为 Go time.Time 对象?

如何正确将 Unix 时间戳转换为 Go time.Time 对象?

DDD
DDD原创
2024-12-17 05:48:25900浏览

How to Correctly Convert a Unix Timestamp to a Go time.Time Object?

Unix 时间戳到 Time.Time 转换 - 解决超出范围错误

使用 time.Parse() 解析 Unix 时间戳时,您可以即使日期和时间格式正确,也会遇到“超出范围”错误。这是因为 time.Parse() 不适用于 Unix 时间戳解析。

要解决此问题,请使用以下步骤:

  1. 将 Unix 时间戳解析为 int64 : 使用 strconv.ParseInt() 将时间戳字符串转换为以 10 为基数的整数(或您选择的任何其他基数)更喜欢)。
  2. 将 int64 转换为 time.Time: 使用 time.Unix(i, 0) 创建一个 time.Time 对象,其中 'i' 是步骤中解析的 int64 1. 这将生成一个 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

此方法确保 Unix 时间戳被正确解析并转换为 time.Time 对象,避免超出范围错误。

以上是如何正确将 Unix 时间戳转换为 Go time.Time 对象?的详细内容。更多信息请关注PHP中文网其他相关文章!

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