ホームページ > バックエンド開発 > Golang > Go の「time.Parse」が「EDT」のようなタイムゾーン識別子を誤解するのはなぜですか?

Go の「time.Parse」が「EDT」のようなタイムゾーン識別子を誤解するのはなぜですか?

Patricia Arquette
リリース: 2024-11-25 14:53:12
オリジナル
230 人が閲覧しました

Why Does Go's `time.Parse` Misinterpret Timezone Identifiers Like

Go の Time.Parse 関数がタイムゾーン識別子を解析しないのはなぜですか?

Go の time.Parse 関数を使用して時刻文字列を解析する場合、 「MST」などのタイムゾーン識別子は、「現在の場所」設定に基づいて解釈されます。現在の場所でその略語が認識されない場合、時刻はオフセット 0 で捏造された場所にあるものとして記録されます。

説明のために、次のコード スニペットで問題を示します。

date := "2018 08 01 12:00 EDT"
tn, _ := time.Parse(format, date)

fmt.Println(tn) // Print +0000 despite EDT indicating a -0400 offset
ログイン後にコピー

このコードは、time.Parse 関数を使用して「2006 01 02 15:04 MST」形式の日付文字列を解析し、結果の時刻を出力します。 物体。ただし、関数で使用される現在の場所が "EDT" の略語を認識しないため、予期される "-0400" ではなく " 0000" が出力されます。

この問題を回避するには、別の解析方法を使用できます。時間文字列:

  • 数値ゾーン オフセットを指定します:数値のゾーン オフセットを含むレイアウト (例: 2006 01 02 15:04 -0400)。
  • Use ParseInLocation: time.LoadLocation を使用して場所を明示的に指定します。例: time.ParseInLocation(format) 、 日付、 time.LoadLocation("America/New_York")).

これらのメソッドを利用すると、ゾーンの略語を含む時間文字列を正確に解析でき、タイムゾーン情報を正しく解釈できます。

以上がGo の「time.Parse」が「EDT」のようなタイムゾーン識別子を誤解するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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