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:03
或 2019-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])
我正在使用 Laravel 5.4 和 Carbon 查找恰好在 laravel 工作前一天和三天的日期以发送通知。因此,例如,如果日期是 2019-03-10 18:00:03
或 2019-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])