【问题标题】:How to fix Carbon timezone after upgrading to Laravel 5.8升级到 Laravel 5.8 后如何修复 Carbon 时区
【发布时间】:2019-09-21 10:10:07
【问题描述】:

升级到 Laravel 5.8 后,“created_at”字段返回这样的字符串

“createdAt”:“2019-05-01T16:36:25.000000Z”

但我想在 Laravel 5.7 中返回一个像以前一样的对象 像这样:

"createdAt": { "日期": "2019-05-01 19:36:25.000000", “时区类型”:3, “时区”:“亚洲/巴格达” }

我确实浏览了网络并没有发现任何关于它的内容,升级指南中也没有关于它的内容。 我从资源中返回它,就像 JSON 一样:

public function toArray($request)
{
    return [
        'id' => $this->id,
        'createdAt' => $this->created_at,
    ];
}

【问题讨论】:

    标签: php laravel php-carbon laravel-5.8


    【解决方案1】:

    这就是我可以解决的方法:

    public function toArray($request)
    {
        return [
            'id' => $this->id,
            'createdAt' => $this->created_at,
            'date' => Carbon::serializeUsing(function ($createdAt) {
              return [
                  'date' => $createdAt->toDateTimeString(),
                  'timezone_type' => $createdAt->timezone_type,
                  'timezone' => $createdAt->tzName,
              ];
            }),
       ];
    }
    

    现在它返回一个像这样的对象:

    "createdAt": {
         "date": "2019-05-01 19:36:25",
         "timezone_type": 3,
         "timezone": "Asia/Baghdad"
    },
    "date": null
    

    重大更改记录在official Carbon documentation

    【讨论】:

      【解决方案2】:

      尝试返回日期的碳实例:

      Carbon::parse($this->created_at)
      

      【讨论】:

      • 也返回字符串 "createdAt": "2019-05-01T16:36:25.000000Z"
      猜你喜欢
      • 2019-12-05
      • 2021-03-21
      • 2018-12-22
      • 2020-02-07
      • 2020-03-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多