Laravel/PHP/Carbon 将日期解析为从 now() 到小时的一天和三天,忽略分钟和秒

Laravel/PHP/Carbon parse a date to one and three days from now() to the hour, disregarding minutes and seconds

我正在使用 Laravel 5.4 和 Carbon 查找恰好在 laravel 工作前一天和三天的日期以发送通知。因此,例如,如果日期是 2019-03-10 18:00:032019-03-10 18:15:34,我想明天在 2019-03-07 18:00:00 发送通知,在 2019-03-09 18:00:00 发送另一个通知。我想在 eloquent 查询中执行此操作,但不太确定如何按天和小时 "lazy match"。如果我有一个带有 start_date 时间戳的 Appointment 模型,我知道我可以按天或日期进行精确匹配,但我想找到忽略 hours/seconds 的匹配。我正在考虑这些方面的事情:

$oneDayAppointments = Appointment::whereDay(
    'start_date',
    Carbon::now()->addDay()->day
)->get();

...会为我安排 start_date 是从现在开始的一天的任何约会。现在我将如何磨练它到一天和一小时。如果我只使用 where 子句:

$oneDayAppointments = Appointment::where(
    'start_date',
    Carbon::now()->addHours(24)
)->get();

...我可以获得完全匹配,但前提是 minutes/seconds 也匹配。谢谢!

根据我上面的评论,应该这样做

$tomorrowStart = Carbon::createFromFormat('Y-m-d H:i:s', Carbon::now()->addDay()->format('Y-m-d H:00:00'));
$tomorrowEnd = $tomorrowStart->copy()->addHour()->subSecond();


//whereBetween('start_date', [$tomorrowStart, $tomorrowEnd])

https://laravel.com/docs/5.8/queries