Как я могу добавить количество дней после окончания месяца в PHP - PullRequest
0 голосов
/ 24 мая 2018

Моя цель - напечатать dueDate.Формула срока оплаты - конец месяца с добавлением дней, которые в моем примере равны 7.Как я могу сделать это возможным?Мое повторяющееся значение для моего фактического результата: «Дата исполнения: 01.08.1970». Мой ожидаемый результат - «Дата исполнения: 07/06/2018»

$invoice_date = "11/05/2018";
$days  = 7;
$is_invoice = false;

$date = date("d/m/Y", strtotime($invoice_date));

if ($is_invoice) {
    $dueDate = date('d/m/Y', strtotime("+$day $days", strtotime($date)));
} else {
    $dueDate = date('t/m/Y', strtotime($date));
    $dueDate = date('d/m/Y', strtotime("+$day days", strtotime($date)));
}

echo "Due date: $dueDate";

Заранее благодарен за помощь

Ответы [ 5 ]

0 голосов
/ 24 мая 2018
$invoice_date = "11-05-2018";
$day  = 7;//in below statements used as day
$is_invoice = false;

$date = date("Y/m/d", strtotime($invoice_date));

if ($is_invoice) {
$dueDate = date('d/m/Y', strtotime($date. ' + '.$day.' days'));
} else {
$dueDate = date('Y-m-t', strtotime($date));
$dueDate = date('d/m/Y', strtotime($dueDate. ' + '.$day.' days'));
}

echo "Due date: ".$dueDate;
0 голосов
/ 24 мая 2018

Конец месяца + 7 дней, как я это читаю ... поправьте меня, если я ошибаюсь:

$invoice_date= '11/05/2018';
$days= 7;

$dueDate= DateTime::createFromFormat('d/m/Y', $invoice_date);
$dueDate->modify('last day of this month')->modify('+7 days');
echo $dueDate->format('d/m/Y');

Дата счета 11/5/2018 возвращает 7/6 / 2018

0 голосов
/ 24 мая 2018

Попробуйте использовать класс DateTime:

$date = DateTime::createFromFormat('d/m/Y', '11/05/2018');

$dueDate = clone $date;
$dueDate->modify('+7 days');

echo 'Date : ' . $date->format('d/m/Y') . "\n";
echo 'Due  : ' . $dueDate->format('d/m/Y') . "\n";

Вывод:

Date : 11/05/2018 
Due : 18/05/2018

См. Здесь: https://3v4l.org/BjUSK

0 голосов
/ 24 мая 2018

Ваша логика кодирования прекрасна, за исключением неопределенной переменной error

$invoice_date = "11/05/2018";
$day  = 7;//in below statements used as day
$is_invoice = false;

$date = date("d/m/Y", strtotime($invoice_date));

if ($is_invoice) {
    $dueDate = date('d/m/Y', strtotime("+$day days", strtotime($date)));
} else {
    $dueDate = date('t/m/Y', strtotime($date));
    $dueDate = date('d/m/Y', strtotime("+$day days", strtotime($date)));
}

echo "Due date: $dueDate";

Undefined variable $ day; // Изменить дни на день

0 голосов
/ 24 мая 2018

Я бы предложил вам использовать класс DateTime и связанные с ним функции:

$invoice_date = "11/05/2018";
$days = 7;

$input = date_create_from_format('d/m/Y', $invoice_date);
$result = $input->add(new DateInterval("P${days}D"));

$dueDate = $result->format('d/m/Y');

echo "Due date: $dueDate";

Вывод:

Due date: 11/05/2018
...