为了账号安全,请及时绑定邮箱和手机立即绑定

Laravel 自动添加迄今为止的时间

Laravel 自动添加迄今为止的时间

PHP
斯蒂芬大帝 2023-10-15 16:21:35
我的 Laravel 应用程序似乎有问题,我一生都无法弄清楚发生了什么。我的 MySQL 数据库中有一个简单的日期字段,其数据类型为date,在本例中值为2020-08-13,但由于某种原因,当我尝试访问日期时,它会在末尾添加一个时间戳,减去 1 天,然后抛出一个 Carbon 尾随数据错误。肯定是这个日期,因为当我软删除它时,错误就消失了。例如,该日期的错误是Carbon\\Carbon::rawCreateFromFormat('Y-m-d', '2020-08-12T23:0...', NULL)正如您所看到的,它正在删除一天并尝试在前一天晚上 11 点进行格式化?我之前也遇到过类似的问题,Laravel 添加了0000-00-00日期,所以我必须在访问器中将其删除,但现在它抛出 11pm,我的字符串替换不再起作用。显然,我可以更改字符串替换器来查找 11pm,但我不想每次格式更改时都必须修复此问题。我的访问器代码如下    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');    }有没有人以前遇到过这样的错误,或者知道发生了什么?
查看完整描述

4 回答

?
catspeake

TA贡献1111条经验 获得超0个赞

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


2019-12-02 20:01:00

但是,在 Eloquent 模型上使用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');

}



查看完整回答
反对 回复 2023-10-15
?
慕村9548890

TA贡献1884条经验 获得超4个赞

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


$dates=['date']

然后通过访问器指定您的日期格式:


   public function getDateAttribute($value){

      

        return $val->format('d/m/Y');

    }


查看完整回答
反对 回复 2023-10-15
?
ITMISS

TA贡献1871条经验 获得超8个赞

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

这显然是时区转换(您可能处于 GMT+1),而这是向 GMT+0 (UTC) 的转换。

您不应该修剪时间来强制“00:00:00”,因为这仅在 1 个时区有效(没有全球午夜时刻,每天每个时区都有不同的午夜时刻),而您的应用程序现在或稍后可以处理多个时区。您应该将时区(例如“欧洲/伦敦”)保存在其他数据库列中,这样您就可以保留完整的信息,并且在检索日期时,您可以动态计算该日期(之前)的午夜 -根据用户时区的时间。


查看完整回答
反对 回复 2023-10-15
?
弑天下

TA贡献1818条经验 获得超8个赞

public function getDateAttribute($value){

   // return  2020-08-17

     $date = date('Y-m-d',strtotime($value));

    return $date;

}

确保配置文件。您会发现有一个当地时间函数,可以将其值从 UTC 更改为您所在国家/地区的当地时间


配置/应用程序.php


'timezone' => 'Asia/Riyadh',


查看完整回答
反对 回复 2023-10-15
  • 4 回答
  • 0 关注
  • 195 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号