1

私は次のコードを持っていますが、それは機能しますが、「よりクリーンな」方法、おそらく少ないコードはありますか?

$today = new DateTime();
$utc_today = date('Y-m-d', $today->format('U'));
$new_date = new DateTime($utc_today, new DateTimeZone('America/New_York'));
$new_date->add(new DateInterval('P3D'));
echo $new_date->format('m-d-Y');
4

1 に答える 1

3

EST で現在時刻に加えて 3 日を表す必要がある場合は、あまりにも多くの作業を行っています。必要なのは次の 1 つのステートメントだけです。

$date = new DateTime("3 days", new DateTimeZone('America/New_York'));
echo $date->format("Y-m-d H:i:s\n");

任意の UTC タイムスタンプで開始する場合、1 行ではなく約 3 行のコードが必要になります。

// let us assume $inputTimestamp is the UTC time you want to play with
$date = new DateTime(null, new DateTimeZone('America/New_York'));
$date->setTimestamp($inputTimestamp);
$date->modify("3 days");
echo $date->format("Y-m-d H:i:s\n");

別の方法として、タイムスタンプに 3 日分の秒を追加してコードを少し節約することもできますが、その方法では読みにくくなります。

$date = new DateTime(null, new DateTimeZone('America/New_York'));
$date->setTimestamp($inputTimestamp + (3*24*60*60) );
echo $date->format("Y-m-d H:i:s\n");

日付/時刻の操作については、PHP Relative Formatsのドキュメントが非常に役立つことがわかりました。それは間違いなく見直す価値があります。

于 2012-11-14T15:05:06.620 に答える