Golang 時區
time 的時區
Golang 裡面取現在時間
now := time.Now()
println("now", now.String())
這樣會得到now 2016-08-09 19:21:24.0960724 +0800 CST
,這代表 golang 的 time 裡面有包含 timezone 的資訊了
時區轉換
如果想把現在的時區轉換到不同的時區,同時時間要改變,例如:我想把現在 UTC + 8 (台北時間)改成 UTC-4 (美東時間)
package main
import "time"
func main() {
now := time.Now()
println("now", now.String())
zone := time.FixedZone("", -4*60*60)
newTime := now.In(zone)
println("newTime", newTime.String())
}
結果為分別為
now 2016-08-08 21:00:49.0930566 +0800 CST
newTime 2016-08-08 09:00:49.0930566 -0400 -0400
主要是使用 FixedZone
這個 function 來達成,第一個參數是 zone 的名稱,第二個參數轉移多少秒 ( 可負數)
Day light saving
因為美國有日光節約時間,當我們要取美東時間,在夏季的時候有可能是會是少一個小時,這時候我們就要用取 timezone 的方式了,但不知道為什麼 America/New_York
在 centos7 下運作不正常,所以改用 America/Nipigon
newYorkZone, _ := time.LoadLocation("America/Nipigon")
newTime := time.Now().UTC().In(newYorkZone)
println(newTime.String())