现在我向收件箱应用发送消息。您可以在图片中看到已保存的消息:
在 16:55 中发送消息。但在我的本地站点错误显示的消息日期:
为什么发送日期的消息无法正确显示? Laravel app配置时区设置"Asia/Tashkent"
$today = Inbox::where($message, $user_id)->whereDate('created_at', Carbon::today())->latest()->paginate($perPage);
$thisYear = Inbox::where($message, $user_id)->whereBetween('created_at', [now()->startOfYear(), Carbon::yesterday()->endOfDay()])->latest()->paginate($perPage);
$pastYear = Inbox::where($message, $user_id)->where('created_at', '<', now()->startOfYear())->latest()->paginate($perPage);
答案 0 :(得分:4)
正如评论中所述,您要使用created_at->format('H:m')
格式化此日期。
在PHP中,m
指的是月份,而不是分钟,即i
。它打印01
,因为这是该日期的月份。
请改用:
created_at->format('H:i')
答案 1 :(得分:1)
请尝试这样:
$today = Inbox::where($message, $user_id)->whereDate('created_at',DB::raw('CURDATE()'))->latest()->paginate($perPage);
假设您要过滤掉今天创建的条目。你有一个时间戳字段created_at,对吗?如何仅从该时间戳过滤DATE?显然,泰勒想到了它。
我见过人们用原始查询来做这件事,比如:
$q->where(DB::raw("DATE(created_at) = '".date('Y-m-d')."'"));
或者没有datetime的原始查询,如下所示:
$q->where('created_at', '>=', date('Y-m-d').' 00:00:00'));
幸运的是,Laravel Query Builder提供了一个更有说服力的解决方案:
$q->whereDate('created_at', '=', date('Y-m-d'));
或者,当然,您可以使用Carbon:
代替PHP date()$q->whereDate('created_at', '=', Carbon::today()->toDateString());