首页 > 解决方案 > 通过转换 unix 时间戳获取不想要的未来日期

问题描述

我有一个 unix 时间戳: 1607875199999

我正在尝试将其转换为日期格式:

import (
    "fmt"
    "time"
)

func main() {
    fmt.Println("Hello, playground")

    t := time.Unix(1607875199999,0)
    fmt.Println(t.Format("02/01/2006, 15:04:05"))
}

结果 ::https 15/07/52921, 15:59:59: //play.golang.org/p/eHx0IrQjL0o

当我在以下位置检查相同的时间戳时:https ://www.epochconverter.com/ 它给了我:2020 年 12 月 13 日星期日 15:59:59

不确定我错过了什么?

标签: go

解决方案


func Unix(sec int64, nsec int64) Time

Unix 返回与给定 Unix 时间相对应的本地时间,自 1970 年 1 月 1 日 UTC 以来的秒秒和纳秒纳秒。

https://golang.org/pkg/time/#Unix

您正在传递自纪元开始以来的毫秒数,而不是秒数。将时间戳拆分为秒和小数部分:

var (
    millis  int64 = 1607875199999
    seconds       = millis / 1000
    nanos         = millis % 1000 * 1e6
)

t := time.Unix(seconds, nanos)
fmt.Println(t.Format("02/01/2006, 15:04:05.000")) // 13/12/2020, 15:59:59.999

在操场上试一试:https: //play.golang.org/p/hwz03bkd2Bq


推荐阅读