PHPのDateTimeを使用して、保存された日付を後で別のタイムゾーンに変換する場合、時間情報を保存する必要がありますか(たとえば、2012-12-31ではなく2012-12-31 00:00:00)。日付だけを保存すると、タイムゾーンの変換が不正確になるため、時間情報が本当に必要なのか、何かが足りないのかわかりません。
質問する
65 次
2 に答える
1
時間を節約するだけでなく、節約しているその日の現在のタイムゾーンも保存する必要があります。これにより、他のタイムゾーンに変更したときに、何に基づいて時間を設定するかが効果的にわかります。
元:2012-11-21T15:52:01+0000
于 2012-11-21T19:01:24.640 に答える
1
タイムゾーンの変換は時間オフセットで機能します。保存されている時間(少なくとも時間)がないと、差を正確に計算できません。
考慮すべき例-データを日ごとにグループ化したい場合、日付はに保存されUTC
ますが、クライアントはにありPST
ます。
に行が作成されまし2012-12-31 08:00:00
たUTC
が、を保存し2012-12-31
ました。
$date = new DateTime('2012-12-31', new DateTimeZone('UTC') );
echo $date->setTimezone( new DateTimeZone('America/Los_Angeles') )->format('Y-m-d');
//2012-12-30
$datetime = new DateTime('2012-12-31 08:00:00', new DateTimeZone('UTC') );
echo $datetime->setTimezone( new DateTimeZone('America/Los_Angeles') )->format('Y-m-d');
//2012-12-31
日付はPSTに反映される必要があります2012-12-31
が、時間オフセットがないと、正しく変換されません。
また、Samuel Cookが回答したdatetime
ように、データベースに単一のタイムゾーンで明示的に保存しない限り、タイムゾーンも保存する必要があります。これにより、変換元がわかります。
于 2012-11-21T19:24:00.460 に答える