Добавить 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');