ホームページ >バックエンド開発 >Golang >Go の「time.Parse()」が曖昧なタイムゾーンの略語で失敗するのはなぜですか?

Go の「time.Parse()」が曖昧なタイムゾーンの略語で失敗するのはなぜですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-11-19 11:18:02372ブラウズ

Why Does Go's `time.Parse()` Fail with Ambiguous Timezone Abbreviations?

Time.Parse() は、あいまいな省略形のためタイムゾーン情報を処理できません

タイムスタンプを解釈しようとするときの time.Parse() 関数タイムゾーンの略語 (「MST」など) を使用すると、いくつかの制限が発生します。具体的には、短縮タイムゾーンが現在の場所で明示的に定義されていない場合、または曖昧な場合 (複数のタイムゾーンを表すことができる「IST」など)、関数はオフセットがゼロの製造場所を想定します。

これこの動作により、タイムゾーンの略語が異なるタイムスタンプを解析して比較するときに不一致が発生します。たとえば、提供されたコード:

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

それぞれのタイムゾーンで異なる時刻を表しているにもかかわらず、「2018-05-11 IST」と「2018-05-11 UTC」の両方が時間によって解析されます。 Parse() は同じゼロ オフセットを持つものとして処理されます。その結果、それらの Unix タイムスタンプは同一となり、同じ時刻値を示します。

この問題を解決するには、UTC との 7 時間の差を表す「-0700」など、数値ゾーン オフセットを使用した時刻レイアウトの使用を検討してください。 。あるいは、手動で構築されたFixedZoneでtime.ParseInLocation()を利用するか、特定のタイムゾーンの場所(インドのISTの場合は「Asia/Kolkata」など)をロードすることを検討してください。これらのアプローチにより、タイムゾーンの処理をより正確に制御でき、正確な時刻解析が保証されます。

以上がGo の「time.Parse()」が曖昧なタイムゾーンの略語で失敗するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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