ホームページ > バックエンド開発 > Golang > Go のタイムゾーン解析で常に UTC が返されるのはなぜですか?

Go のタイムゾーン解析で常に UTC が返されるのはなぜですか?

Linda Hamilton
リリース: 2024-12-01 01:23:14
オリジナル
731 人が閲覧しました

Why Does My Go Timezone Parsing Always Return UTC?

Go でのタイムゾーン解析について

Go では、タイムゾーンを処理すると予期しない動作が発生することがあります。カスタム時刻形式を使用してタイムゾーンを解析するときに発生する一般的な問題を詳しく見てみましょう。

問題: 入力に関係なく一貫したタイムゾーン出力

提供されたコード スニペットは、表現された時刻を解析することを目的とした parseAndPrint 関数を定義します。特定のタイムゾーン内で「05:00:00」として入力し、結果を UTC で出力します。ただし、指定されたタイムゾーンに関係なく、結果の時刻は変化せず、毎回「[date] 05:00:00 0000 UTC」と表示されます。

問題の理解

根本原因は次のとおりです。 parseAndPrint 関数内の time.Parse を使用して時間を解析する方法。現在の時刻は time.Now() で取得され、引数として time.Parse に渡され、指定されたタイムゾーンの略語に従って入力文字列が解釈されます。

ただし、解析はシステムのローカル タイムゾーンで行われます。 、希望するタイムゾーンが指定されていません。この不一致により、意図したタイムゾーンに関係なく、間違った解析と UTC での一貫した出力が発生します。

解決策: 正しいタイムゾーンの処理

タイムゾーンを適切に処理するには、タイムゾーンの文字列表現を解析することが重要です。正しい time.Location インスタンスを使用して、指定されたタイムゾーンの時刻を取得します。これには次の手順が含まれます:

  • time.LoadLocation を使用してタイムゾーン データベースから目的のタイムゾーンをロードします。
  • time.ParseInLocation.
  • 次を使用して時刻を UTC に変換します。 test.UTC().
このアプローチを組み込むことにより、コードはタイムゾーン間の時差を考慮して、指定されたタイムゾーンを正しく解析して出力します。

以上がGo のタイムゾーン解析で常に UTC が返されるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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