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

Laravel 8 - 日期转换

如何解决Laravel 8 - 日期转换

我对在 Laravel 8 中使用 Date Casting (https://laravel.com/docs/8.x/eloquent-mutators#date-casting) 感到困惑。

我需要从数据库获取所有格式为 Y-m-d\TH:i:s.vP日期字段;例如:1990-02-12T01:08:12.820+00:00

为此,在我的 Origin 模型中,我设置:

class Origin extends Model
{
    protected $casts = [
        'myDate' => 'datetime:Y-m-d\TH:i:s.vP'
    ];
}

现在,字段 myDate 被转换为 Carbon

$ PHP artisan tinker
>>>
>>> $origin = App\Origin::first();
>>>
>>> dd($origin->myDate);
Illuminate\Support\Carbon @634784892^ {#4629
  #constructedobjectId: "000000005620d556000000007f71416e"
  #localMonthsOverflow: null
  #localYearsOverflow: null
  #localStrictModeEnabled: null
  #localHumanDiffOptions: null
  #localToStringFormat: null
  #localSerializer: null
  #localMacros: null
  #localGenericMacros: null
  #localFormatFunction: null
  #localTranslator: null
  #dumpProperties: array:3 [
    0 => "date"
    1 => "timezone_type"
    2 => "timezone"
  ]
  #dumpLocale: null
  date: 1990-02-12 01:08:12.820 UTC (+00:00)
}
>>>
>>>

但是当我获得属性时,输出不遵守格式 Y-m-d\TH:i:s.vP:

>>>
>>> echo $origin->myDate;
1990-02-12 01:08:12⏎
>>>
>>>

要获得所需的格式,我需要再次格式化它:

>>>
>>> echo $origin->myDate->format('Y-m-d\TH:i:s.vP');
1990-02-12T01:08:12.820+00:00⏎
>>>
>>>

或在使用前转换模型 toArray()

>>>
>>> echo $origin->toArray()['myDate'];
1990-02-12T01:08:12.820+00:00⏎
>>>
>>>

设置日期格式并获得正确输出的最佳实践是什么?我想使用:

>>>
>>> echo $origin->myDate;
1990-02-12T01:08:12.820+00:00⏎
>>>
>>>

谢谢

解决方法

正如您所说的 Laravel 铸造格式不起作用,您可以像这样创建访问器

class Origin extends Model
{
    protected $casts = [
        'myDate' => 'datetime:Y-m-d\TH:i:s.vP'
    ];


    public function getMyDateAttribute($value)
    {
        return $value->format('Y-m-d\TH:i:s.vP');
    }
}

它将确保您始终返回此格式

参考链接 https://laravel.com/docs/8.x/eloquent-mutators#defining-an-accessor

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 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”。这是什么意思?