Go では、タイムゾーンを処理すると予期しない動作が発生することがあります。カスタム時刻形式を使用してタイムゾーンを解析するときに発生する一般的な問題を詳しく見てみましょう。
提供されたコード スニペットは、表現された時刻を解析することを目的とした parseAndPrint 関数を定義します。特定のタイムゾーン内で「05:00:00」として入力し、結果を UTC で出力します。ただし、指定されたタイムゾーンに関係なく、結果の時刻は変化せず、毎回「[date] 05:00:00 0000 UTC」と表示されます。
根本原因は次のとおりです。 parseAndPrint 関数内の time.Parse を使用して時間を解析する方法。現在の時刻は time.Now() で取得され、引数として time.Parse に渡され、指定されたタイムゾーンの略語に従って入力文字列が解釈されます。
ただし、解析はシステムのローカル タイムゾーンで行われます。 、希望するタイムゾーンが指定されていません。この不一致により、意図したタイムゾーンに関係なく、間違った解析と UTC での一貫した出力が発生します。
タイムゾーンを適切に処理するには、タイムゾーンの文字列表現を解析することが重要です。正しい time.Location インスタンスを使用して、指定されたタイムゾーンの時刻を取得します。これには次の手順が含まれます:
以上がGo のタイムゾーン解析で常に UTC が返されるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。