Увеличить количество дней до текущей даты php()
Вопрос
Как добавить определенное количество дней к текущей дате в PHP?
Я уже получил текущую дату с:
$today = date('y:m:d');
Просто нужно добавить к нему x количество дней
Решение
php
поддерживает функции даты в стиле C.Вы можете добавлять или вычитать периоды дат с помощью фраз в английском стиле с помощью 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"));
или
<select id="date_list" class="form-control" style="width:100%;">
<?php
$max_dates = 15;
$countDates = 0;
while ($countDates < $max_dates) {
$NewDate=Date('F d, Y', strtotime("+".$countDates." days"));
echo "<option>" . $NewDate . "</option>";
$countDates += 1;
}
?>
Другие советы
день составляет 86400 секунд.
$tomorrow = date('y:m:d', time() + 86400);
Самый простой способ добавить х нет. дней ..
echo date('Y-m-d',strtotime("+1 day")); //+1 day from today
ИЛИ с указанной даты ...
echo date('Y-m-d',strtotime("+1 day", strtotime('2007-02-28')));
date_add ()
Функция должна делать то, что вы хотите. Кроме того, ознакомьтесь с документами (неофициальными, но немного скучными) по DateTime
, с ним гораздо приятнее работать, чем с процедурными функциями в PHP.
С PHP 5.3
$date = new DateTime();
$interval = new DateInterval('P1D');
echo $date->format('Y-m-d') , PHP_EOL;
$date->add($interval);
echo $date->format('Y-m-d'), PHP_EOL;
$date->add($interval);
echo $date->format('Y-m-d'), PHP_EOL;
выведет
2012-12-24
2012-12-25
2012-12-26
Если вам нужен этот код в нескольких местах, я бы посоветовал вам добавить короткую функцию, чтобы сделать ваш код проще и проще для тестирования.
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 );
Добавить 15 дней к выбранному элементу (используя предложение «Живой, чтобы умереть»)
<select id="date_list" class="form-control" style="width:100%;">
<?php
$max_dates = 15;
$countDates = 0;
while ($countDates < $max_dates) {
$NewDate=Date('F d, Y', strtotime("+".$countDates." days"));
echo "<option>" . $NewDate . "</option>";
$countDates += 1;
}
?>
$NewDate=Date('Y-m-d', strtotime("+365 days"));
echo $ NewDate; // 2020-05-21
Из документации mktime : mktime () полезен для арифметики и проверки даты, так как он автоматически вычислит правильное значение для ввода вне диапазона. Р>
Преимущество этого метода заключается в том, что вы можете добавлять или вычитать любой временной интервал (часы, минуты, секунды, дни, месяцы или годы) в легко читаемой строке кода. Р>
Остерегайтесь компромисса в производительности, поскольку этот код примерно в 2,5 раза медленнее, чем strtotime ("+1 день") из-за всех вызовов функции date (). Рассмотрите возможность повторного использования этих значений, если вы находитесь в цикле. $ NewTime = mktime (date ('G'), date ('i'), date ('s'), date ('n'), date ('j') + $ DaysToAdd, date) ( 'Y')); код> р>
<?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>