【发布时间】:2021-07-01 05:54:49
【问题描述】:
我正在使用 Laravel 项目和时区(我知道时区很痛苦),发生的事情是我的表中的一个自定义列,名为 last_checked 的列存储为timestamp 的格式似乎与 created_at 不同,这意味着我的时区解析根本没有解析用户时区的日期。
这就是我的意思...
存储记录时,我设置了日期和时间:
$uptimeMonitor = Monitors::where('id', $monitor['id'])
->get()
->first();
$uptimeMonitor->last_checked = Carbon::now();
$uptimeMonitor->save();
但是当我检索结果时,查看我的网络请求,我看到了这种格式:
2021-04-05 11:46:54
但是当我查看created_at 和updated_at 列时,它们的格式如下:
2021-04-05T10:01:16.000000Z
所以这里的问题是,我在保存数据方面做错了什么?两种格式在数据库中的视觉显示似乎相同,但出于某种奇怪的原因,第一个示例未正确解析。
【问题讨论】:
-
使用
NOW()方法获取当前日期。 -
这就是我目前正在做的事情?
-
Carbon::now()不同于NOW()方法 -
Carbon::now()在这里完全没问题。因此,您的 PHP 配置(而不是 DB 配置)正在推动时间同步。 (所以你可以在单元测试中模拟它。)不要使用 SQLNOW(),这是错误的,不会解决你的问题。顺便说一句,UTC 应该是您的默认时区:config/app.php 和 DB 时区。
标签: php laravel date datetime php-carbon