Go语言没有一个像php那种全局设置时区的办法。
在Go语言上,go语言的time.Now()返回的是当地时区时间,直接用:
time.Now().Format("2006-01-02 15:04:05")
输出的是当地时区时间。
go语言并没有全局设置时区这么一个东西,每次输出时间都需要调用一个In()函数改变时区:
var TimeLocation, _ = time.LoadLocation("Asia/Shanghai") //上海 fmt.Println("SH : ", time.Now().In(TimeLocation).Format("2006-01-02 15:04:05"))
在windows系统上,time.LoadLocation会加载失败。最好的办法是用time.FixedZone
var TimeLocation= time.FixedZone("CST", 8*3600) // 东八 fmt.Println("SH : ", time.Now().In(TimeLocation).Format("2006-01-02 15:04:05"))
via https://studygolang.com/articles/13018
以上内容根据测试结果有修改。
----------------华丽的分割线-------------------
经过实际测试,在windows下使用time.LoadLocation("Asia/Shanghai")会报错:
Handler crashed with error time: missing Location in call to Time.In
实际使用时可以这样:
TimeLocation,err := time.LoadLocation("Asia/shanghai") if err != nil{ logs.Debug(err) TimeLocation = time.FixedZone("CST", 8*3600) }
这样无论程序部署在哪个地区都能显示顺眼的时间了。