У меня есть календарь календаря php, который запрашивает базу данных для получения дат.
Я показываю дату события, используя:
$event['date']
и этот дисплей в этом формате:
Например, 2013-07-31
.
Теперь мне нужно проверить, соответствует ли эта дата предыдущей дате текущей дате.
Как я могу это сделать?
Вы можете сравнить даты с классом DateTime
PHP:
$date = new DateTime($event['date']); $now = new DateTime(); if($date < $now) { echo 'date is in the past'; }
Смотрите это вживую!
Примечание. Использование класса DateTime
предпочтительнее, чем strtotime()
поскольку последний будет работать только для дат до 2038 года. Подробнее о проблеме Year_2038_ .
Вы можете использовать strtotime()
и time()
:
if (strtotime($event['date']) < time()) { // past date }
if (time() > strtotime($event['date'])) { // current date is greater than 2013-07-31 }
strtotime анализирует дату, используя эти правила .
@ 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('Ym-d', strtotime('2017-09-15') ) ).' '; $Date2 = strtotime(date('Ym-d')); if($Date1 < $Date2) { echo 'date is in the past'; }