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

问题描述 投票:1回答:1

我正在使用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发送通知。我想在一个雄辩的查询中做到这一点,但不确定如何按天和小时“懒惰匹配”。如果我有一个带Appointment时间戳的start_date模型,我知道我可以按天或日期进行完全匹配,但我想找到忽略小时/秒的匹配。我正在考虑以下几点:

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

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

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

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

laravel laravel-5 eloquent laravel-5.4 php-carbon
1个回答
2
投票

在上面的评论中,我们应该这样做

$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

© www.soinside.com 2019 - 2024. All rights reserved.