Как добавить определенное количество дней к текущей дате в PHP?
У меня уже есть текущая дата:
$today = date('y:m:d');
Просто нужно добавить x количество дней к нему
php
поддерживает функции даты стиля c. С помощью функции strtotime
вы можете добавлять или выписывать периоды даты с помощью англоязычных фраз strtotime
. Примеры…
$Today=date('y:m:d'); // add 3 days to date $NewDate=Date('y:m:d', strtotime("+3 days")); // subtract 3 days from date $NewDate=Date('y:m:d', strtotime("-3 days")); // PHP returns last sunday's date $NewDate=Date('y:m:d', strtotime("Last Sunday")); // One week from last sunday $NewDate=Date('y:m:d', strtotime("+7 days Last Sunday"));
день составляет 86400 секунд.
$tomorrow = date('y:m:d', time() + 86400);
Функция date_add()
должна делать то, что вы хотите. Кроме того, проверьте документы (неофициальные, но официальные – немного разреженные) для объекта DateTime
, с ними гораздо лучше работать, чем процедурные функции в PHP.
С php 5.3
$date = new DateTime(); $interval = new DateInterval('P1D'); echo $date->format('Ym-d') , PHP_EOL; $date->add($interval); echo $date->format('Ym-d'), PHP_EOL; $date->add($interval); echo $date->format('Ym-d'), PHP_EOL;
-$date = new DateTime(); $interval = new DateInterval('P1D'); echo $date->format('Ym-d') , PHP_EOL; $date->add($interval); echo $date->format('Ym-d'), PHP_EOL; $date->add($interval); echo $date->format('Ym-d'), PHP_EOL;
-$date = new DateTime(); $interval = new DateInterval('P1D'); echo $date->format('Ym-d') , PHP_EOL; $date->add($interval); echo $date->format('Ym-d'), PHP_EOL; $date->add($interval); echo $date->format('Ym-d'), PHP_EOL;
выйдет
2012-12-24
2012-12-25
2012-12-26
Самый простой способ добавить x no. дней ..
echo date('Ym-d',strtotime("+1 day")); //+1 day from today
ИЛИ с указанной даты …
echo date('Ym-d',strtotime("+1 day", strtotime('2007-02-28')));
Если вам нужен этот код в нескольких местах, я бы предложил вам добавить короткую функцию, чтобы ваш код был проще и проще в тестировании.
function add_days( $days, $from_date = null ) { if ( is_numeric( $from_date ) ) { $new_date = $from_date; } else { $new_date = time(); } // Timestamp is the number of seconds since an event in the past // To increate the value by one day we have to add 86400 seconds to the value // 86400 = 24h * 60m * 60s $new_date += $days * 86400; return $new_date; }
Тогда вы можете использовать его в любом месте:
$today = add_days( 0 ); $tomorrow = add_days( 1 ); $yesterday = add_days( -1 ); $in_36_hours = add_days( 1.5 ); $first_reminder = add_days( 10 ); $second_reminder = add_days( 5, $first_reminder ); $last_reminder = add_days( 3, $second_reminder );
<?php $dt = new DateTime; if(isset($_GET['year']) && isset($_GET['week'])) { $dt->setISODate($_GET['year'], $_GET['week']); } else { $dt->setISODate($dt->format('o'), $dt->format('W')); } $year = $dt->format('o'); $week = $dt->format('W'); ?> <a href="<?php echo $_SERVER['PHP_SELF'].'?week='.($week-1).'&year='.$year; ?>">Pre Week</a> <a href="<?php echo $_SERVER['PHP_SELF'].'?week='.($week+1).'&year='.$year; ?>">Next Week</a> <table width="100%" style="height: 75px; border: 1px solid #00A2FF;"> <tr> <td style="display: table-cell; vertical-align: middle; cursor: pointer; width: 75px; height: 75px; border: 4px solid #00A2FF; border-radius: 50%;">Employee</td> <?php do { echo "<td>" . $dt->format('M') . "<br>" . $dt->format('d M Y') . "</td>\n"; $dt->modify('+1 day'); } while ($week == $dt->format('W')); ?> </tr> </table>