代码之家  ›  专栏  ›  技术社区  ›  User3

从转换unix时间戳获取不希望的未来日期

go
  •  0
  • User3  · 技术社区  · 4 年前

    我有一个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"))
    }
    

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

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

    不知道我错过了什么?

    0 回复  |  直到 4 年前
        1
  •  2
  •   Peter saif iqbal    4 年前
    func Unix(sec int64, nsec int64) Time
    

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

    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