PHP сравнивает date_diff с течением времени - PullRequest
0 голосов
/ 08 октября 2019

Если у меня есть

$time_interval = date_diff(date1, date2)

Как я могу сделать это в PHP?

If ($time_interval >= ('2 months and 15 days'))
    echo "time is '2 months and 15 days' or more"
else
    echo "time is less than '2 months and 15 days'"

Я пытался

if ($time_interval->m <= 2 and $time_interval->d < 15)

Но это вернет FALSEдля 1 month and 20 days что явно не так

Есть ли что-то вроде ..?

$time_lapse = create_my_own_time_lapse(2months & 15 days)

Тогда было бы очень удобно сравнить оба

If ($time_interval >= $time_lapse)

РЕШЕНИЕ

date_diff перенастраивает объект DateInterval. Я нашел способ создать свой собственный DateInterval для «2 месяцев и 15 дней». Это мой обновленный код:

Посетите PHP DateInterval руководство для деталей

$today = new DateTime(date('Y-m-d'));
$another_day = new DateTime("2019-05-10");

$time_diff = date_diff($today, $another_day);

// 'P2M15D' is the interval_spec for '2 months and 15 days'
$time_interval = new DateInterval('P2M15D');

// Let's see our objects
print_r($time_diff);
print_r($timeInterval);

if($time_diff >= $time_interval)
    echo "<br/>time is '2 months and 15 days' or more";
else
    echo "<br/>time is less than '2 months and 15 days'";

Ответы [ 2 ]

1 голос
/ 08 октября 2019

ваш код почти правильный. Просто удалите and и добавьте strtotime()

из:

if ($time_interval >= ('2 months and 15 days'))
    echo "time is '2 months and 15 days' or more";
else
    echo "time is less than '2 months and 15 days'";

в:

if ($time_interval->getTimestamp()) >= strtotime('2 months 15 days'))
    echo "time is '2 months and 15 days' or more";
else
    echo "time is less than '2 months and 15 days'";
0 голосов
/ 08 октября 2019

Простой способ сделать это - преобразовать ваше время в секунды, а затем сравнить эти секунды с количеством секунд, равным 2 месяцам и 15 дням.

$timeInterval = strtotime('2009-12-01') - strtotime('2009-10-01');
$overSeconds = 60 * 60 * 24 * 75; // 60 seconds * 60 minutes * 24 hours * 75 days

if($timeInterval >= $overSeconds)
    echo "time is '2 months and 15 days' or more";
else
    echo "time is less than '2 months and 15 days'";
...