Unix时间戳格式转换

时间:2014-07-21 18:08:29

标签: go

1405936049的unix_timestamp对应于:2014-07-21 09:47:29。我的目标是从时间戳中推导出后一种形式。

阅读格式文档后,我想出了以下内容:

fmt.Println(time.Unix(1405936049, 0).Format("2006-01-02 15:04:05"))

产生:2014-07-21 02:47:29,这是有道理的,因为time.Unix(1405936049, 0)给出:2014-07-21 02:47:29 -0700 PDT(很清楚,我想:2014-07-21 09:47:29,小时是不正确的)。

我确定如果我知道正确的术语,我能够在文档中找到解决方案,但此时,我不确定如何告诉解析器解释-0700或者替代解决方案可能是使用除time.Unix()之外的其他内容,以便产生的时间已经考虑了小时差异?任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:3)

您想要UTC时间,而不是您当地的PDT时间。例如,

package main

import (
    "fmt"
    "time"
)

func main() {
    fmt.Println(time.Unix(1405936049, 0).UTC().Format("2006-01-02 15:04:05"))
}

输出:

2014-07-21 09:47:29

答案 1 :(得分:0)

您必须使用Location

loc, _ := time.LoadLocation("Europe/Paris")
fmt.Println(time.Unix(1405936049, 0).In(loc).Format("2006-01-02 15:04:05"))

我认为您想要的位置是“UTC”,但我让您检查(否则,这里是a list of all available locations)。在游乐场中格式已经09:47:29的原因是playground does not include locations并默认使用UTC。