如何使用Go中的GMT以格式显示当前日期和时间?

时间:2019-04-19 15:54:33

标签: datetime go

我正在尝试获取这样的日期和时间2014-06-22 22:00:22 GMT + 2 最好的方法是什么?

我正在尝试各种变体。最接近的是这个

time.Now().Format("2006-01-02 15:04:05 GMT+1")

除了格林尼治标准时间,我得到了很好的结果-这是错误的。我试图像这样更改模板并获得结果:

  

GMT + 0 => GMT + 0

     

GMT + 1 => GMT + 4

但是我住在格林尼治标准时间+3并期望这个数字。 我在做什么错了?

2 个答案:

答案 0 :(得分:1)

例如,对于莫斯科,格林尼治标准时间+03,

package main

import (
    "fmt"
    "time"
)

func main() {
    // Your Local time zone
    now := time.Now().Round(0)
    fmt.Println(now.UTC())
    fmt.Println(now)
    t := now.Format("2006-01-02 15:04:05 GMT-07")
    fmt.Println(t)

    // For example, use Moscow time zone (GMT+03)
    fmt.Println()
    moscow, err := time.LoadLocation("Europe/Moscow")
    if err != nil {
        panic(err)
    }
    now = time.Now().In(moscow)
    fmt.Println(now.UTC())
    fmt.Println(now)
    t = now.Format("2006-01-02 15:04:05 GMT-07")
    fmt.Println(t)
}

输出:

2019-04-19 17:24:20.582630875 +0000 UTC
2019-04-19 13:24:20.582630875 -0400 EDT
2019-04-19 13:24:20 GMT-04

2019-04-19 17:24:20.582729015 +0000 UTC
2019-04-19 20:24:20.582729015 +0300 MSK
2019-04-19 20:24:20 GMT+03

答案 1 :(得分:-2)

Per the documentation time软件包支持hhmmhh:mmhh格式;不直接支持单位数字h的偏移量:

  

数字时区偏移格式如下:

-0700  ±hhmm
-07:00 ±hh:mm
-07    ±hh

请记住,time.Format的格式字符串告诉它如何呈现时间的各个部分。它不会{em>更改有关Time的任何内容,包括区域设置。如果要渲染其他时区的时间,请使用Time.In来获取其他时区的时间:

timeInGMTPlus3 := time.Now().In(time.FixedZone("some zone", int((3 * time.Hour).Seconds()))