Дата плюс один месяц php [дубликат]
этот вопрос уже есть ответ здесь:
У меня небольшая проблема с датами в PHP.
когда я сделал 31 + 1 месяц январь с помощью этого кода
$newDate = date('Y-m-d', strtotime('31-01-2016'.' + 1 month'));
echo $newDate;
это дает мне 2 марта, но мне нужно дать мне 29 февраля
Мне нужно добавить 1 месяц, а не 30 дней.
то же самое для всех дат: например 01 января + 1 месяц => 1 февраля
29 января + 1 месяц => 29 февраля
30 января + 1 месяц => 29 февраля
31 января + 1 месяц => 29 февраля
Спасибо за помощь
4 ответов
Я думаю, что вы ищете этот тип дат.
<?php
$date = date('2016-01-31');
$currentMonth = date("m",strtotime($date));
$nextMonth = date("m",strtotime($date."+1 month"));
if($currentMonth==$nextMonth-1){
$nextDate = date('Y-m-d',strtotime($date." +1 month"));
}else{
$nextDate = date('Y-m-d', strtotime("last day of next month",strtotime($date)));
}
echo "Next date would be : $nextDate";
?>
Проверьте live demo:https://eval.in/610034
- если дата
31-01-2016
тогда следующая дата будет29-02-2016
- если дата
25-01-2016
тогда следующая дата будет25-02-2016
просто:
$date = new DateTime('2016-01-31');
$date->modify('last day of next month');
это, конечно, считается, только если вы всегда идете от конца одного мотылька до конца следующего.
попробуйте это,
$date = "2016-01-29";
$date = date('Y-m-d', strtotime("last day of next month",strtotime($date)));
echo $date;
Как насчет чего-то вроде этого:
date_default_timezone_set('UTC');
$current_month = (int) date('m');
$year = date('y');
$newDate = date('Y-m-d', strtotime('31-1-2016'.' + 1 month'));
if($current_month == 12)
{
$new_month=0;
$year++;
}
$d = new DateTime( $year.'-'.($current_month+1).'-01' );
echo $d->format( 'Y-m-t' )."\n";
изменить $current_month / долл. ежегодно, исходя из ваших потребностей......