ホームページ > バックエンド開発 > Golang > UTC オフセットを手動で追加すると、Go で UTC を現地時間に正確に変換できないのはなぜですか?

UTC オフセットを手動で追加すると、Go で UTC を現地時間に正確に変換できないのはなぜですか?

Linda Hamilton
リリース: 2024-12-26 06:25:11
オリジナル
151 人が閲覧しました

Why Does Manually Adding UTC Offset Fail to Accurately Convert UTC to Local Time in Go?

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

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