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

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

Mary-Kate Olsen
リリース: 2024-11-30 13:21:15
オリジナル
519 人が閲覧しました

Why Does My Go Timezone Conversion Always Return UTC?

タイムゾーンの解析と変換について

提供された Go コード スニペットでは、parseAndPrint 関数は特定の時間を解析し、指定されたタイムゾーンで表示することを目的としています。ただし、選択したタイムゾーンに関係なく、常に「[date] 05:00:00 0000 UTC」が返されます。この問題を解決するには、タイムゾーンの解析と変換について深く理解することが不可欠です。

Go でのタイムゾーンの処理

時間値を解析するときは、通常、現在のローカル タイムゾーンで実行します。ただし、タイムゾーンの略語は、解析元の場所に固有です。異なるタイムゾーンの時刻を解析する必要がある場合は、適切な時刻の位置またはタイムゾーン オフセットを明示的に指定する必要があります。

コードの問題

提供されたコードの問題は、次の行にあります。テスト時間は time.Date を使用して作成されます。この行は、入力文字列の解析時にタイムゾーン パラメーターを指定した場合でも、テスト時間のタイムゾーンをシステムのローカル タイムゾーンに設定します。したがって、テスト時間を UTC に変換すると、常にローカル タイムゾーンと同じオフセットになります。

解決策

これを修正するには、提供されたタイムゾーン情報を使用してテスト時間を作成する必要があります。これは、time.LoadLocation を使用して対応する時間位置オブジェクトをロードし、次に time.ParseInLocation を使用してその位置の入力文字列を解析することによって実行できます。結果として得られる時刻には、正しいタイムゾーン オフセットが設定されます。

代替アプローチ

特定の要件に応じて、タイムゾーンと変換を処理するための代替アプローチを検討できます。

  • UTC メソッドを使用して明示的に変換することで、すべての時間を UTC に正規化します。
  • タイムゾーンのみを使用して動作します。オフセット (例: "-05:00")。
  • Go の time.Location インターフェイスを利用して、特定のタイムゾーンの時間を読み込み、解析します。

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

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