提供された Go コード スニペットでは、parseAndPrint 関数は特定の時間を解析し、指定されたタイムゾーンで表示することを目的としています。ただし、選択したタイムゾーンに関係なく、常に「[date] 05:00:00 0000 UTC」が返されます。この問題を解決するには、タイムゾーンの解析と変換について深く理解することが不可欠です。
時間値を解析するときは、通常、現在のローカル タイムゾーンで実行します。ただし、タイムゾーンの略語は、解析元の場所に固有です。異なるタイムゾーンの時刻を解析する必要がある場合は、適切な時刻の位置またはタイムゾーン オフセットを明示的に指定する必要があります。
提供されたコードの問題は、次の行にあります。テスト時間は time.Date を使用して作成されます。この行は、入力文字列の解析時にタイムゾーン パラメーターを指定した場合でも、テスト時間のタイムゾーンをシステムのローカル タイムゾーンに設定します。したがって、テスト時間を UTC に変換すると、常にローカル タイムゾーンと同じオフセットになります。
これを修正するには、提供されたタイムゾーン情報を使用してテスト時間を作成する必要があります。これは、time.LoadLocation を使用して対応する時間位置オブジェクトをロードし、次に time.ParseInLocation を使用してその位置の入力文字列を解析することによって実行できます。結果として得られる時刻には、正しいタイムゾーン オフセットが設定されます。
特定の要件に応じて、タイムゾーンと変換を処理するための代替アプローチを検討できます。
以上がGo のタイムゾーン変換で常に UTC が返されるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。