PHP Проверьте, прошла ли дата до определенной даты, заданной в определенном формате

У меня есть календарь событий php, который запрашивает базу данных для получения дат.

Я показываю дату события, используя:

$event['date']

и этот дисплей в этом формате:

2013-07-31 например.

Теперь мне нужно проверить, соответствует ли эта дата прошедшей дате текущей дате.

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

Ответы

Ответ 1

Вы можете сравнить даты с PHP DateTime класс:

$date = new DateTime($event['date']);
$now = new DateTime();

if($date < $now) {
    echo 'date is in the past';
}

Посмотрите на живое!


Примечание. Использование класса DateTime предпочтительнее, чем strtotime(), поскольку последний будет работать только для дат до 2038 года. Подробнее о Year_2038_problem.

Ответ 2

Вы можете использовать strtotime() и time():

if (strtotime($event['date']) < time()) {
    // past date
}

Ответ 3

if (time() > strtotime($event['date']))
{
    // current date is greater than 2013-07-31 
}

strtotime анализирует дату, используя эти правила.

Ответ 4

@Satch3000 Вы приняли неправильный ответ в качестве правильного решения (@Amal Murali)

Пожалуйста, смотрите вывод, Здесь я ввожу сегодняшнюю дату, но возвращает текущую дату как прошлую дату.

<?php

/* Enter today date */
$date = new DateTime("09/14/2017");
$now = new DateTime();

print_r($date);

print_r($now);


if($date < $now) {
    echo 'date is in the past';
}

Выход будет

DateTime Object
(
    [date] => 2017-09-14 00:00:00.000000
    [timezone_type] => 3
    [timezone] => UTC
)
DateTime Object
(
    [date] => 2017-09-14 07:12:52.000000
    [timezone_type] => 3
    [timezone] => UTC
)
date is in the past

Решение

$Date1 = strtotime(date('Y-m-d', strtotime('2017-09-15') ) ).' ';
$Date2 = strtotime(date('Y-m-d'));

  if($Date1 < $Date2) {
        echo 'date is in the past';
    }