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

Laravel自动添加时间

如何解决Laravel自动添加时间

我的Laravel应用程序似乎有问题,我一生无法弄清楚发生了什么。

我的MysqL数据库中有一个简单的日期字段,其数据类型仅为date,对于本示例,该值为2020-08-13,但是由于某种原因,当我尝试访问日期时,最后添加时间戳,减少1天,并引发Carbon尾随数据错误

肯定是这个日期,因为当我软删除它时,错误消失了。

例如,此日期的错误

Carbon\\Carbon::rawCreateFromFormat('Y-m-d','2020-08-12T23:0...',NULL)

如您所见,它要删除一天并尝试在前一天晚上11点格式化吗?

在Laravel为日期添加0000-00-00之前,我遇到了类似的问题,因此我不得不在访问器中将其删除,但是现在它在晚上11点抛出,我的字符串替换不再起作用。显然,我可以只更改字符串替换器以查找晚上11点,但是我不想每次格式更改时都必须解决此问题。

我的访问者代码如下

    public function getDateAttribute($value){
        //String replace and remove the time from the value if it exists
        $value = str_replace(' 00:00:00','',$value);
        return Carbon::CreateFromFormat('Y-m-d',$value)->format('d/m/Y');
    }

以前有没有人遇到过这样的错误,或者知道发生了什么事?

解决方法

Laravel 7 之前,日期将被序列化为以下格式:

2019-12-02 20:01:00

但是,在雄辩的语言上使用 toArray toJson 方法时, Laravel 7 使用新的日期序列化格式。型号,日期格式为 ISO-8601 ISO-8601 日期始终以 UTC 表示,如下所示:

2019-12-02T20:01:00.283041Z

如果您想继续使用以前的行为,可以在模型上覆盖 serializeDate()方法,请将其添加到模型中:

use DateTimeInterface;

protected function serializeDate(DateTimeInterface $date)
{
    return $date->format('Y-m-d H:i:s');
}
,

首先在模型上将您的列定义为$ dates属性:

$dates=['date']

然后按访问者指定日期格式:

   public function getDateAttribute($value){
      
        return $val->format('d/m/Y');
    }
,
public function getDateAttribute($value){
   // return  2020-08-17
     $date = date('Y-m-d',strtotime($value));
    return $date;
}

确保配置文件。您会发现本地时间功能可以将其值从UTC更改为您所在国家的当地时间

config / app.php

'timezone' => 'Asia/Riyadh',
,

正在删除一天并尝试在前一天晚上11点格式化

这显然是时区偏移(您可能在GMT + 1中),并且这是向GMT + 0(UTC)的偏移。

您不应该缩短强制执行“ 00:00:00”的时间,因为这只会在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”。这是什么意思?