Добавить 30 лет до даты php

Я хочу добавить 30 лет к дате в php. он отлично работает через 20 лет, но при замене 20 лет на 30 лет он показывает дату по умолчанию. как это 1970-01-01. Это то, что я сделал.

$created_date = '2017-12-30 08:30:27'

$futureDate=date('Y-m-d', strtotime('+30 year', strtotime($created_date)) );

echo $futureDate;

о / п:

1970-01-01

Есть идеи почему?

2 ответа

Решение

Вы можете использовать DateTime

<?php

$created_date = '2017-12-30 08:30:27';

$EndDateTime = DateTime::createFromFormat('Y-m-d H:i:s', $created_date);
$EndDateTime->modify('+30 years');
echo $EndDateTime->format('Y-m-d H:i:s');

Вывод: - https://eval.in/928779

В 32-разрядной версии была ошибка, которая не может обрабатывать даты после 2038 года.

Вместо этого используйте класс DateTime, который обходит эту проблему 2038.

Для PHP 5.3+

$date = new DateTime('2017-12-30');
$date->add(new DateInterval('Y30'));
echo $date->format('Y-m-d');

Для PHP 5.2

$date = new DateTime('2017-12-30');
$date->modify('+30 year');
echo $date->format('Y-m-d');
Другие вопросы по тегам