Go語言設定時區問題
阿新 • • 發佈:2019-02-09
方法一:
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,直接下載即可。也可以嘗試自己製作~