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のドキュメントが非常に役立つことがわかりました。それは間違いなく見直す価値があります。