1. 程式人生 > >Go語言設定時區問題

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,直接下載即可。也可以嘗試自己製作~