シナリオは次のとおりです。PHP のデフォルトのタイムゾーンを UTC に設定しています。私が扱っている日付/時刻は 1 つを除いてすべて現在の UTC 時刻に設定されています。後で表示するときに、その特定のユーザーのタイムゾーンを設定すると、日付がタイムゾーンで表示されます。よく働く。
ただし、ユーザーがフォームに入力できる日付/時刻が 1 つあります。24 時間形式で「YYYY-MM-DD HH:MM」となります (例: 「2014-09-18 17:00」)。ユーザーは当然、UTC ではなくタイムゾーンで時刻を設定します。
入力値を使用して新しい DateTime オブジェクトを作成すると、UTC で保存されるため、後で表示すると数時間ずれます (元のタイムゾーンによって異なります)。新しいオブジェクトにタイムゾーンを設定すると、入力値が UTC であると仮定して値が変更されます。
私はいくつかのグーグルを行いましたが、PHPに関しては何も見つかりませんでした(私が見つけたC#のいくつかの答えが存在します)。これは DateTime オブジェクト (または Carbon) で可能ですか? ユーザーの現在のタイムゾーンに基づいて時間を手動で加算/減算して、最初に UTC に配置することにこだわっていますか?