我正在尝试获取这样的日期和时间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并期望这个数字。 我在做什么错了?
答案 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
软件包支持hhmm
,hh:mm
和hh
格式;不直接支持单位数字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()))