首頁 >後端開發 >Golang >為什麼我的 Go 時區解析總是回傳 UTC?

為什麼我的 Go 時區解析總是回傳 UTC?

Linda Hamilton
Linda Hamilton原創
2024-12-01 01:23:14732瀏覽

Why Does My Go Timezone Parsing Always Return UTC?

了解 Go 中的時區解析

在 Go 中,處理時區有時會導致意外行為。讓我們深入研究使用自訂時間格式解析時區時遇到的常見問題。

問題:無論輸入如何,時區輸出一致

提供的程式碼片段定義了一個parseAndPrint 函數,旨在解析所表示的時間為特定時區內的“05:00:00” ,然後以UTC 格式列印結果。然而,無論指定的時區如何,結果時間都保持不變,每次都顯示「[date] 05:00:00 0000 UTC」。

理解問題

根本原因在於如何在 parseAndPrint 函數中使用 time.Parse 解析時間。當前時間透過 time.Now() 取得並作為參數傳遞給 time.Parse,後者根據指定的時區縮寫解釋輸入字串。

但是,解析是在系統的本地時區中完成的,不是指定的所需時區。無論預期的時區如何,這種差異都會導致錯誤的解析和 UTC 的一致輸出。

解:正確的時區處理

要正確處理時區,解析時區的字串表示至關重要使用正確的 time.Location 實例在指定時區中的時間。這涉及以下步驟:

  • 使用 time.LoadLocation 從時區資料庫載入所需的時區。
  • 使用 time.ParseInLocation 為該時區建立一個 time.Time 物件。
  • 使用 test.UTC() 將時間轉換為 UTC。

透過採用此方法,程式碼將正確解析並列印所需時區中提供的時間,並考慮時區之間的時差。

以上是為什麼我的 Go 時區解析總是回傳 UTC?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn