Мне нужно сравнить даты из моей базы данных с текущим днем. Этот идентификатор моего кода, красноречивый:
$posts = Post::where('date', '=', date('Ym-d'))->get();
Я хочу получать только сегодняшние сообщения. Зная, что поле «дата» имеет тип Date, как мне это сделать? Я попытался преобразовать date('Ym-d')
в строку с помощью метода 'format', но кажется, что date('Ym-d')
каким-то образом возвращает Boolean, и, таким образом, метод 'format' не может к нему применить.
Я использую это для обработки дат моей базы данных
//Get the database date, and format it $database_date = date_format($database_date, 'Ym-d'); //Get today date or another date of you choice $today_date = new DateTime(); //Format it $today_date = date_format($today_date, 'Ym-d'); // Use strtotime() to compare the dates or DateTime::diff for more cleaner IMO $difference = strtotime($today_date) - strtotime($database_date);
Если я получаю то, что вы хотите, вы можете использовать функцию strtotime . Он преобразует строку даты и времени, переданную ей, в временную метку Unix, которую вы можете использовать для сравнения.
Если дата с 2015-10-21
то функция вернет 1445385600
и если сегодняшняя дата с date(Ymd)
равна 2015-10-31, тогда функция вернет 1446249600
чтобы вы могли легко сравнить эти два.
$var1 = strtotime('2015-10-21'); $var2 = strtotime('2015-10-31');
Тогда сравнение можно сделать так, как if($var1 == $var2)