0

PHPのDateTimeを使用して、保存された日付を後で別のタイムゾーンに変換する場合、時間情報を保存する必要がありますか(たとえば、2012-12-31ではなく2012-12-31 00:00:00)。日付だけを保存すると、タイムゾーンの変換が不正確になるため、時間情報が本当に必要なのか、何かが足りないのかわかりません。

4

2 に答える 2

1

時間を節約するだけでなく、節約しているその日の現在のタイムゾーンも保存する必要があります。これにより、他のタイムゾーンに変更したときに、何に基づいて時間を設定するかが効果的にわかります。

元:2012-11-21T15:52:01+0000

詳細はこちら

于 2012-11-21T19:01:24.640 に答える
1

タイムゾーンの変換は時間オフセットで機能します。保存されている時間(少なくとも時間)がないと、差を正確に計算できません。

考慮すべき例-データを日ごとにグループ化したい場合、日付はに保存されUTCますが、クライアントはにありPSTます。

に行が作成されまし2012-12-31 08:00:00UTCが、を保存し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 に答える