2017-07-11 114 views
1

我是一個golang開發商和我試圖UTC時間轉換爲本地時間,但我的代碼不working.Here是我的代碼給特定的位置轉換UTC時間爲當地時間我想通過使用golang

utc := time.Now().UTC() 
local := utc 
location, err := time.LoadLocation("Asia/Delhi") 
if err == nil { 
    local = local.In(location) 
} 
log.Println("UTC", utc.Format("15:04"), local.Location(), local.Format("15:04")) 
+0

可能重複[轉換UTC到「本地」時間 - 轉](https://stackoverflow.com/questions/25318154/convert-utc-to-local-time-go) – Mohsin

回答

3

你在第3行得到一個錯誤,你就不能看到它,因爲它避免了if塊,因此永遠不會更新第5行

local變量失敗的原因是因爲「亞洲/德里'不是一個有效的奧爾森格式。

添加else塊,並打印出err.Error()

請參見以下鏈接的有效格式列表:

https://en.wikipedia.org/wiki/List_of_tz_database_time_zones

+0

我得到了預期的結果,當我使用地理位置「亞洲/加爾各答」。是否有任何其他方法通過提供g緯度和經度的位置@Gov –

+0

有許多方法可以從lat/long中找到數據:https://stackoverflow.com/questions/16086962/how-to-get-a-time-zone-from -a-位置使用緯度和經度座標 – Gov

3

你應該重寫代碼發生時處理錯誤。默認的執行路徑應該沒有錯誤。於是,經過time.LoadLocation檢查,如果有一個錯誤:

utc := time.Now().UTC() 
local := utc 
location, err := time.LoadLocation("Asia/Delhi") 
if err != nil { 
    // execution would stop, you could also print the error and continue with default values 
    log.Fatal(err) 
} 
local = local.In(location) 
log.Println("UTC", utc.Format("15:04"), local.Location(), local.Format("15:04")) 

現在,你會是這樣的:

cannot find Asia/Delhi in zip file /usr/local/go/lib/time/zoneinfo.zip 
panic: time: missing Location in call to Time.In 

你必須要找到你的位置的有效時間zome,因爲其他人說維基百科檢查time zones