Добавить 30 дней до даты

Привет всем, я пытаюсь добавить 30 дней к моей дате. Я использую ниже кодирование.

<?php
$next_due_date = date('05/06/2016', strtotime("+30 days"));
echo $next_due_date;
?>

Но он возвращается только к "05/06/2016"!

Пожалуйста, помогите мне!

Ответ 1

Пожалуйста, попробуйте это.

echo date('m/d/Y',strtotime('+30 days',strtotime('05/06/2016'))) . PHP_EOL;

Это вернет 06/06/2016. Предполагаю, что ваша начальная дата была в формате m/d/Y. Если нет, не беспокойтесь и используйте это.

echo date('d/m/Y',strtotime('+30 days',strtotime(str_replace('/', '-', '05/06/2016')))) . PHP_EOL;

Это даст вам дату в формате d/m/Y, а также если ваша начальная дата была в формате d/m/Y. Возвращает 05/07/2016

Если входная дата будет в mysql, вы можете выполнить эту функцию непосредственно в mysql, как это.

DATE_ADD(due_date, INTERVAL 1 MONTH);

Ответ 2

Do не используйте функцию php date(), она не так точна, как приведенное ниже решение, и, кроме того, она ненадежна в будущем.

Используйте класс DateTime class

<?php
$date = new DateTime('2016-06-06'); // Y-m-d
$date->add(new DateInterval('P30D'));
echo $date->format('Y-m-d') . "\n";
?>

Причина, по которой вам следует избегать каких-либо действий с метками времени UNIX (time(), date(), strtotime() и т.д.), заключается в том, что они неизбежно прервутся в году 2038 из-за целочисленных ограничений.

Максимальное значение целого числа - 2147483647, которое преобразуется в Tuesday, 19 January 2038 03:14:07, так что приходите на этот раз; в эту минуту; эта секунда; все ломается

Источник

Ответ 3

Вам нужно указать формат даты, например d/m/Y вместо 05/06/2016

Try

$old_date = '05-06-2016';
$next_due_date = date('d-m-Y', strtotime($old_date. ' +30 days'));
echo $next_due_date;

Ответ 4

Первый параметр - это формат, а не текущая дата.

<?php
$next_due_date = date('d/m/Y', strtotime("+30 days"));
echo $next_due_date;

Демо: https://eval.in/583697

Если вы хотите добавить 30 days к определенной начальной дате, используйте второй параметр функции strtotime, чтобы сообщить, с чего начать.

В случае сомнений относительно того, как работает функция, обратитесь к руководству.

http://php.net/manual/en/function.strtotime.php
http://php.net/manual/en/function.date.php

Ответ 5

$date = "1998-08-14";
$newdate = strtotime ( '30 day' , strtotime ( $date ) ) ;
$newdate = date ( 'Y-m-j' , $newdate );

echo $newdate;

Найдено код выше