在一小时内获得所有结果

时间:2016-10-31 04:33:19

标签: laravel laravel-5 laravel-5.3 php-carbon

我试图在一小时内得到所有结果。不是过去的一小时,而是在一小时内。

例如,如果它目前是12:30,我希望从12:00开始,而不是11:30获得所有结果。或者,如果它是6:45,我希望从6:00开始,而不是5:45获得所有结果。

如何使用Carbon和Laravel进行此操作?

这是我到目前为止所得到的:

$user = User::where('created_at', WHAT DO I PUT HERE)
    ->get();

5 个答案:

答案 0 :(得分:1)

我知道,您正在寻找碳溶液。出于可读性和可移植性的原因,低于本机OOP PHP DateTime解决方案。

$user = User::where('created_at', '>=', (new DateTime)->format('Y-m-d H:00:00'))
->get();

注意> =运算符!

答案 1 :(得分:0)

您可以使用Carbon's now()subHour()方法:

$user = User::where('created_at', '>', Carbon::now()->subHour())->get();

答案 2 :(得分:0)

您可以使用简单的PHP date()函数

执行此操作
$user = User::where('created_at', '>', date('Y-m-d H:00:00'))->get();

答案 3 :(得分:0)

要做到这一点,你必须得到当前时间,没有分钟和秒。然后运行查询以在该时间之后返回结果。

$currentHourInt = Carbon::now('Asia/Dhaka')->hour; 
$currentHour = Carbon::createFromTime($currentHourInt,0,0);

$user = User::where('created_at','>',$currentTime)
            ->get();

在上面的示例中,$currentHourInt将返回当前时间的整数值。例如,如果是13:54:12,它将返回13。我使用Aisa/Dhaka作为我的时区,您可以使用自己的时区,如果您的数据在UTC时间保存,则将其留空。 $currentHour以当前小时,0分钟和0秒创建当前时间。例如,如果是13:54:12,则会返回13:00:00

有关Carbon的更多信息:http://carbon.nesbot.com/docs/

希望它会有所帮助

答案 4 :(得分:0)

您可以使用whereBetween方法。

User::whereBetween('created_at', [date('Y-m-d H:00:00'), date(Y-m-d H:i:s)])->get();