Добавить дни к следующему / следующему месяцу, используя 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');