ホームページ >バックエンド開発 >Golang >Go の `time.Parse()` はタイム ゾーンをどのように処理しますか? 正確な時刻解析のためのベスト プラクティスは何ですか?

Go の `time.Parse()` はタイム ゾーンをどのように処理しますか? 正確な時刻解析のためのベスト プラクティスは何ですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-11-21 22:28:13596ブラウズ

How Does Go's `time.Parse()` Handle Time Zones, and What Are the Best Practices for Accurate Time Parsing?

Time.Parse() とタイムゾーンに関する考慮事項

Go では、日時文字列を解析するときに time.Parse() は本質的にタイムゾーンを調整しません。 。この特殊性により、さまざまなタイムゾーンで時刻を操作するときに予期しない結果が生じる可能性があります。

次のコードを考えてみましょう:

t, err := time.Parse("2006-01-02 MST", "2018-05-11 IST")
t2, err := time.Parse("2006-01-02 MST", "2018-05-11 UTC")
fmt.Println(t.Unix())
fmt.Println(t2.Unix())

直感的には、これら 2 つの時刻値には異なる Unix タイムスタンプが期待されるでしょう。 IST と UTC 間の時差。ただし、コードの出力は両方の時間値で同一です。これは、time.Parse() が「IST」のような未知のタイムゾーン略語に遭遇すると、実際のタイムゾーン情報を使用する代わりにゼロ オフセットを想定するためです。

特定のタイムゾーンで時刻解析を正しく処理するには、いくつかの方法があります。使用する:

  • 数値ゾーン オフセットを使用した解析: 次のレイアウトを使用します。 「-0700」や「0530」などの数値ゾーン オフセットが明示的に含まれます。
  • Use time.ParseInLocation(): time.FixedZone() または time を使用して、目的のタイムゾーンを手動で作成します。 .LoadLocation() を呼び出し、それを 2 番目の引数として渡します。 time.ParseInLocation().
  • タイムゾーンをロードします: time.LoadLocation() を使用して、「アジア/コルカタ」や「UTC」など、操作したい特定のタイムゾーンをロードします。 .

これらの手法を採用することで、さまざまなタイムゾーンで正確な時刻解析と操作を保証し、予期しない変換を回避できます。問題があります。

以上がGo の `time.Parse()` はタイム ゾーンをどのように処理しますか? 正確な時刻解析のためのベスト プラクティスは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。