ホームページ >バックエンド開発 >Golang >Go の time.Parse 関数を使用するときにタイムゾーンを正しく処理するにはどうすればよいですか?

Go の time.Parse 関数を使用するときにタイムゾーンを正しく処理するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-11-27 13:59:10345ブラウズ

How to Correctly Handle Timezones When Using Go's time.Parse Function?

time.Parse の動作

Go の time.Parse 関数を使用して文字列を time.Time 値に変換しようとすると、タイムゾーンが正しく指定されていない場合、予期しない結果が発生する可能性があります。この記事では、タイムゾーンの形式を ISO 8601 に合わせることで、この問題の解決策を検討します。

time.Parse 関数には、入力文字列の形式を定義するレイアウト文字列が必要です。提供されたレイアウト文字列「2013-05-13T18:41:34.848Z」は、Golang で使用される基準時刻、つまり UTC-0700 タイムゾーンの「Mon Jan 2 15:04:05 MST 2006」を正確に表していません。

この問題を解決するには、基準時間に一致するカスタム レイアウト文字列を定義する必要があります。次のレイアウト文字列を使用する必要があります:

const longForm = "2006-01-02 15:04:05 -0700"

このレイアウト文字列は基準時刻の形式と一致します。

  • 2006-01-02 は形式の日付を表します。 YYYY-MM-DD
  • 15:04:05 は形式で時刻を表しますHH:MM:SS
  • -0700 は UTC-0700 のタイムゾーン オフセットを表します

この修正されたレイアウト文字列を使用すると、time.Parse 関数は入力文字列を正常に変換できます。 time.Time 値:

t, err := time.Parse(longForm, "2013-05-13 18:41:34.848 -0700")
if err != nil {
  log.Fatal(err)
}
fmt.Println(t)

これは正しく動作します出力:

2013-05-13 01:41:34.848 +0000 UTC

これは、Go で time.Parse を使用するときにタイムゾーンの書式設定を正しく処理して、正確な時刻変換を保証する方法を示します。レイアウト文字列を基準時刻とタイムゾーンの指定に合わせることで、期待どおりの結果が得られます。

以上がGo の time.Parse 関数を使用するときにタイムゾーンを正しく処理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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