Добавить дни к следующему / следующему месяцу, используя php

У меня есть дата в PHP с использованием функции даты

$date =  date('Y-m-d');

Мне нужно добавить определенное количество дней в следующем месяце, чтобы показать крайний срок.

Например: если кто-то добавляет работу сегодня с 5 days, 2014-08-04 срок должен быть 2014-09-06

Я планировал получить текущий месяц, используя функцию даты, и увеличить значение на 1, чтобы перейти к следующему месяцу, а затем добавить количество дней в день в функции даты.

Это выглядит долго и не так

Может кто-нибудь сказать мне, что было бы лучшим способом добиться этого?

2 ответа

Просто используйте DateTime():

$date = (new DateTime('2014-08-04'))->modify('next month')->modify('+5 days')->format('Y-m-d');

или с DateInterval():

$date = (new DateTime('2014-08-04'))->modify('next month')->add(new DateInterval('P5D'))->format('Y-m-d');

или, возможно, лучше подходит для ваших нужд:

$days = 5;
$date = (new DateTime())->modify('next month')->modify("{$days} days")->format('Y-m-d'); 

Оба вышеперечисленных требуют PHP 5.4+. Если вам нужно это преобразовать в PHP 5.3, просто дайте мне знать.

Вот версия PHP 5.3 вышеупомянутого кода:

$days = 5;
$date = new DateTime();
$date->modify("next month"); 
$date->modify("{$days} days"); 
$date = $date->format('Y-m-d');

Сообществу PHP повезло, что в него встроено такое мощное ядро ​​из доступных функций. Существует бесчисленное множество способов решить эту проблему, но самый простой из них - лучший.

strtotime поддерживается с версии 4. Это быстро. Ясно. Это очень ремонтопригодно. Не нужно ничего более сложного.

$future_stamp = strtotime('+ 1 month 5 days');
$date = date('Y-m-d', $future_stamp);

РЕДАКТИРОВАТЬ:

После долгих чтений и догадок, это, вероятно, то, что вы на самом деле хотите. Кроме того, чувствую себя обязанным прочитать strtotime документация. Вы могли бы понять это.

$future_stamp = strtotime(date('Y-m-d', strtotime('first day of next month')) . ' + 5 days');
Другие вопросы по тегам