Go で UTC を現地時間に変換する: 間違った結果のトラブルシューティング
UTC を現地時間に変換するときは、タイムゾーンの違いと、タイムゾーンの違いを考慮することが重要です。変換を実行するための正しい方法。
提供されたコード スニペットでは、手動で変換を試みています。現在の UTC 時間にタイム ゾーン オフセットを期間として追加すると、夏時間などの要因により不正確な結果が生じる可能性があります。
タイム ゾーン マッピング:
コードは静的マップに依存してタイム ゾーン オフセットを保存します。より信頼性の高いアプローチには、指定された名前に基づいてタイム ゾーン情報を動的にロードする time.LoadLocation 関数の使用が含まれます。これにより、タイム ゾーンの差の精度が保証されます。
組み込みのタイム ゾーン変換:
時刻を手動で調整する代わりに、time.In メソッドを利用することをお勧めします。 、タイムスタンプを特定のタイムゾーンに変換します。これには、現在の設定と夏時間の調整が考慮され、より正確な結果が得られます。
コード例:
var countryTz = map[string]string{ "Hungary": "Europe/Budapest", "Egypt": "Africa/Cairo", } func timeIn(name string) time.Time { loc, err := time.LoadLocation(countryTz[name]) if err != nil { panic(err) } return time.Now().In(loc) } 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 を使用します。この改訂されたコードにより、タイムゾーンの違いと夏時間を考慮して、現地時間が UTC から正しく変換されるようになります。
以上がGo で UTC を現地時間に手動で変換すると、誤った結果が生成されることが多いのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。