Я хочу проверить, будет ли данная дата более 20 лет в будущем, используя PHP
Пока я делаю это:
<?php
$date = '2039-03-23';
if (floor((time() + strtotime($date)) / (60*60*24*365)) > 20)
{
echo "date is in future over 20 years..<br>";
}
else
{
echo "date is in future but less than 20 years.<br>";
}
Но это не работает, кто-нибудь, пожалуйста, скажите мне, что я здесь делаю не так.
Заранее спасибо.
Вы добавляете дату сейчас (time()
) чтобы $date
и заканчивайте путь дальше, чем предполагалось, поэтому вместо этого:
floor((strtotime($date)-time()) / (60*60*24*365))
Должен дать вам разницу между 2039-03-23 и сейчас.
Обратите внимание, что даты могут быть хуже сегодняшних, и вам следует подумать о добавлении результата «дата в прошлом».
Хотя ответ Номиса правильный, ваш подход выглядит ужасно сложным и безобразным. Я бы использовал DateTime
-Объект и работа с тем:
//create the DateTime-Object with origin time
$dateOrigin = new DateTime('2027-03-23');
//create a new one with current time
$dateNow = new DateTime();
//Add 20 years to the current time object
$dateNow->add(new DateInterval("P240M"));
//compare them
if($dateNow < $dateOrigin) {
echo "date is 20 or more years in the future";
} else {
echo "date is not 20 or more years in the future";
}
За работой пример.