Laravel:错误地显示来自数据库的消息的日期

时间:2018-01-11 12:13:00

标签: php laravel laravel-5.5

现在我向收件箱应用发送消息。您可以在图片中看到已保存的消息: enter image description here

16:55 中发送消息。但在我的本地站点错误显示的消息日期: enter image description here 为什么发送日期的消息无法正确显示? 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);

2 个答案:

答案 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());