微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Laravel 使用 Carbon::now() 保存数据的格式与 created_at

如何解决Laravel 使用 Carbon::now() 保存数据的格式与 created_at

我正在处理一个 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_atupdated_at 列时,它们的格式如下:

2021-04-05T10:01:16.000000Z

所以这里的问题是,我保存数据时做错了什么?两种格式在数据库中的显示方式似乎相同,但由于某些奇怪的原因,第一个示例没有正确解析。

解决方法

Carbon 使用默认的 DateTime PHP 对象,因此使用 date_default_timezone_set() 函数,例如: date_default_timezone_set('UTC');

或者你定义它AppServiceProvider App/Providers/AppServiceProvider.php

public function boot()
{
    date_default_timezone_set('UTC');
}

或者你可以用setTimezone的碳法

echo Carbon::now()->setTimezone('UTC')->format('H:i');

试试这个

$uptimeMonitor = Monitors::where('id',$monitor['id'])
                           ->get()
                           ->first();

$uptimeMonitor->last_checked = Carbon::now()->setTimezone('UTC')->format('Y-m-d H:i:s');
$uptimeMonitor->save();

注意我的默认应用时区是 UTC 只需找到您的默认时区 并将其设置在 `setTimezone('UTC');

,

您需要在您的 $casts 模型保护成员中添加所有日期时间属性:

https://laravel.com/docs/8.x/eloquent-mutators#date-casting

在您的数据库中一切正常,只是 Laravel 模型必须知道它是一个日期,以便在您的 JSON 中使用完整的 ISO-8601 字符串进行格式化。

旁注,您仍然应该在 config/app.php 中将“UTC”作为默认值,它不会阻止对特定情况进行任何时区处理,或者相反地处理用户时区。

如果您的日期默认输出字符串为 GMT+1,则很可能是配置错误。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?