GoLang time 包默认是 UTC ,可以通过下面两种方式设置时区
方法一
l,_ := time.LoadLocation("Asia/Shanghai")
fmt.Println(time.Now().In(l))
l,_ = time.LoadLocation("America/Adak")
fmt.Println(time.Now().In(l))
方法二
package main
import (
"fmt"
"time"
)
func main(){
var cstZone = time.FixedZone("CST", 8*3600) // 东八
fmt.Println(time.Now().In(cstZone).Format("01-02-2006 15:04:05"))
}
LoadLocation 有个问题,它依赖于 IANA Time Zone Database (简称 tzdata 吧) 这个数据库,一般 linux 系统都带了,但是 windows 系统就没带。
LoadLocation
但是也有办法,我们可以自己把 tzdata 文件放到自己的程序目录中,然后让 time 包能够从我们自己的程序目录中加载时区文件就可以了。
文件目录可以通过环境变量设置,在 main 方法中:
os.Setenv("ZONEINFO", '/home/tz/data.zip')
然后再调用 LoadLocation 方法就可以了。