datetime — Как правильно сравнивать две даты в php?

Мне нужно сравнить даты из моей базы данных с текущим днем. Этот идентификатор мой код, в красноречивом:

$posts = Post::where('date', '=', date('Y-m-d'))->get();

Я хочу получить только сегодняшние сообщения.
Зная, что поле ‘date’ имеет тип Date, как мне заставить это работать?
Я пытался конвертировать date('Y-m-d') в строку с помощью метода «format», но кажется, что date('Y-m-d') каким-то образом возвращает логическое значение, и поэтому метод ‘format’ не может быть применен к нему ..

3

Решение

Я использую это для обработки дат моей базы данных

    //Get the database date, and format it

$database_date = date_format($database_date, 'Y-m-d');

//Get today date or another date of you choice
$today_date = new DateTime();

//Format it
$today_date = date_format($today_date, 'Y-m-d');

// Use strtotime() to compare the dates or DateTime::diff for more cleaner IMO
$difference = strtotime($today_date) - strtotime($database_date);
3

Другие решения

Если я получаю то, что вы хотите, вы можете использовать StrToTime функция. Он преобразует строку даты и времени, переданную ей, в метку времени Unix, которую вы можете использовать для сравнения.

Если дата от 2015-10-21 тогда функция вернется 1445385600 и если сегодняшняя дата от date(Y-m-d) 2015-10-31, то функция вернется 1446249600 так что вы можете легко сравнить их.

$var1 = strtotime('2015-10-21');

$var2 = strtotime('2015-10-31');

Тогда сравнение может быть сделано как if($var1 == $var2)

1

По вопросам рекламы [email protected]