date — получить +30 дней от отметки времени (PHP)

Вот мой код:

$graceperiod = strtotime("+30 day","23-12-2013");
echo $graceperiod;

Я получаю следующий вывод:

Sat, 31 Jan 1970 00:00:23 GMT

Год не тот. Любая идея, почему он не конвертирует должным образом?

1

Решение

strtotime — «опасная» функция, если вы не знаете, что именно она делает.
Вы должны попробовать это так

strtotime('+30 days', $timestamp);

Где $ timestamp — это фактическая временная метка, потому что она не так надежна, как вы могли бы пожелать

1

Другие решения

strtotime принимает метку времени Unix в качестве второго параметра, поэтому вам нужно сначала преобразовать ее.

Следующее имеет правильный вывод:

$graceperiod = date("Y-m-d", strtotime("+30 days",strtotime("23-12-2013")));
echo $graceperiod;
1

Вы можете использовать старый добрый strtotime() функция (которая принимает метку времени в качестве второго параметра) или использовать DateTime классы:

С помощью strtotime()

$format = 'd-m-Y';

$timestamp = strtotime( "+30 day",strtotime( "23-12-2013" ) );
echo date( $format, $timestamp );

С помощью DateTime классы:

$dateTime = DateTime::createFromFormat( $format, '23-12-2013' );
$dateTime->add( new DateInterval( 'P30D' ) );
echo $dateTime->format( $format );

Здесь P30D означает период в 30 дней

Одно из преимуществ использования DateTime это вы можете определить ваш собственный формат вместо того, чтобы использовать из список принятых форматов за strtotime()

1

менять

$graceperiod = strtotime("+30 day","23-12-2013");

в

$graceperiod = strtotime("+30 days","23-12-2013");

30 days правильно вместо 30 day

Ссылка

0

strtotime принимает второй параметр как метку времени, поэтому вы должны сделать:

$graceperiod = strtotime("+30 day", strtotime("23-12-2013"));
echo date("Y-m-d H:i:s", $graceperiod);
0

Попробуйте следующий код.

$date = "23-12-2013";
$graceperiod = date("Y-m-d", strtotime("+30 days",strtotime($date)));
echo $graceperiod;
0
strtotime("next month");

или же

date('Y-m-d', strtotime("+30 days"));
0

Код:

$graceperiod = strtotime('23-12-2013 +30 day');
var_dump(date('Y-m-d', $graceperiod));

Результат:

string(10) "2014-01-22"
0
По вопросам рекламы [email protected]