Go で UTC を現地時間に正確に変換します
質問:
試行中UTC 時間を特定の国の現地時間に変換する場合、Go プログラムは UTC の違いを考慮しているにもかかわらず、誤った結果に遭遇します。根本的な問題は何でしょうか?
答え:
このエラーは、UTC の差を期間として手動で追加して時刻を計算するときに発生します。このアプローチでは、夏時間 (DST) などの他の要因は考慮されません。
UTC 時間を現地時間に正確に変換するには、time.LoadLocation を使用するのが正しい方法です。その方法は次のとおりです。
import "time" // A map of country names to their time zone names var countryTz = map[string]string{ "Hungary": "Europe/Budapest", "Egypt": "Africa/Cairo", } // Function to convert UTC time to the local time of a specific country func timeIn(name string) time.Time { loc, err := time.LoadLocation(countryTz[name]) if err != nil { panic(err) } return time.Now().In(loc) } // Example usage func main() { utc := time.Now().UTC().Format("15:04") hun := timeIn("Hungary").Format("15:04") eg := timeIn("Egypt").Format("15:04") fmt.Println(utc, hun, eg) }
このコードは、まず国名と対応するタイム ゾーン名へのマッピングを定義します。次に、time.LoadLocation を使用して、特定の国の特定のタイム ゾーンを取得します。 time.Now().In(loc) を呼び出すと、DST およびその他の要素を考慮して、現在の UTC 時間が目的の国の現地時間に変換されます。
以上がUTC オフセットを手動で追加すると、Go で UTC を現地時間に正確に変換できないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。