2016-12-24 161 views
1

如何将此代码从Python转换为Go?TimeZone字符串格式化

>>> from time import gmtime 
>>> from time import strftime 
>>> strftime("%z", gmtime()) 
'-0800' 

我想:

package main 

import (
    "fmt" 
    "time" 
) 

func main() { 
    fmt.Println(time.Now().Local().Format("-0700")) 
} 

但它显然不工作:

+0000 

我有些困惑一般在时间格式部分,因为const的符号(例如stdNumTZ)不从time包中导出。

time.Now().Local()在Python中真正代替gmtime.gmtime()

回答

2

您不需要拨打Local()那里,因为time.Now()返回当地时间。当我尝试在我的机器上运行你的代码时,我得到了正确的结果。它看起来像你正在运行的时区是UTC。 (您可以通过打印time.Now().Zone()的结果来查看时区)。

gmtime在Python中返回UTC时间。在Go中,您可以通过调用时间值In(time.UTC)将时间转换为UTC。 (我不是Python专家,我不知道为什么gmtime()的时区被报告为当地时区(我在我的机器上重现了该时区)。)

+0

我在Go Playground上运行它:https ://play.golang.org/p/Ij-TuuRX_K – Laurent

+1

时区有UTC,所以这就是为什么你得到“+0000”。 –