ホームページ > バックエンド開発 > Golang > Go で UTC を現地時間に手動で変換すると、誤った結果が生成されることが多いのはなぜですか?

Go で UTC を現地時間に手動で変換すると、誤った結果が生成されることが多いのはなぜですか?

Susan Sarandon
リリース: 2024-12-22 14:15:13
オリジナル
548 人が閲覧しました

Why Does Manually Converting UTC to Local Time in Go Often Produce Incorrect Results?

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 サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート