Go语言设置时区问题

方法一:
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"))
}

方法二:

转自:https://studygolang.com/topics/5559#reply1

time包设置时区方法:

l,_ := time.LoadLocation("Asia/Shanghai")
fmt.Println(time.Now().In(l))
l,_ = time.LoadLocation("America/Adak")
fmt.Println(time.Now().In(l))

LoadLocation 有个问题,它依赖于 IANA Time Zone Database (简称 tzdata 吧) 这个数据库,一般linux系统都带了,但是windows系统就没带。

没有 tzdata 就会从$GOROOT/中找。对于没有安装go环境的windows系统来说,就没办法通过 LoadLocation 设置时区。

但是也有办法,我们可以自己把tzdata文件放到自己的程序目录中,然后让 time 包能够从我们自己的程序目录中加载时区文件就可以了。

文件目录可以通过环境变量设置,在main方法中:

os.Setenv("ZONEINFO", '/home/tz/data.zip')

然后再调用 LoadLocation 方法就可以了。

data.zip 文件我上传到github,直接下载即可。也可以尝试自己制作~

下载传送门:https://github.com/keepeye/tzdata


你可能感兴趣的:(Golang)