Go の Time.Parse() はタイムゾーン識別子を解析しない
提供されたコードでは、time.Parse() 関数は次の目的で使用されます。文字列を解析して time.Time オブジェクトに変換します。ただし、この関数は文字列内のタイムゾーン識別子を解析しないため、不正確な時刻オブジェクトが生成されます。
time.Parse() ドキュメントによると、関数のデフォルトの動作では、 MST のようなゾーンの略語が見つかった場合は、現在の場所のタイムゾーン。これは、現在の場所が CST に設定されているために、出力の 1 行目と 3 行目が正しくない理由を説明しています。具体的には、「EDT」文字列は「東部夏時間」として解釈され、CST のタイムゾーンのオフセット -0500 が使用されます。
この問題を回避し、タイムゾーン識別子を正しく解析するには、time.ParseInLocation ()関数が使えます。この関数では、時刻文字列を解析するときに使用する場所を指定する必要があります。この場合、「America/New_York」の場所を使用して、「EDT」タイムゾーン識別子を正しく解析できます。
あるいは、time.Parse() のレイアウト文字列を変更して、オフセットを明示的に指定することもできます。レイアウト文字列自体 (例:
format := "2006 01 02 15:04 -0400 MST" tn, _ := time.Parse(format, date)
) これらのメソッドのいずれかを使用すると、time.Parse() が正確に実行されることが保証されます。タイムゾーン識別子を解析し、正しいオフセットを持つ time.Time オブジェクトを作成します。
以上がGo の「time.Parse()」がタイムゾーン識別子を正確に解析できないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。