加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

php – Laravel 5使用时区返回日期时间

发布时间:2020-12-14 19:45:00 所属栏目:大数据 来源:网络整理
导读:我正在构建一个API,我希望将所有时间戳(如created_at,deleted_at,…等)作为复杂对象(包括实际日期时间,还包括时区)返回. 我已在控制器中使用{Carbon / Carbon}.我也在模型中定义了我的日期字段. 当我访问控制器中的日期字段时,我实际上获得了Carbon对象.但是
我正在构建一个API,我希望将所有时间戳(如created_at,deleted_at,…等)作为复杂对象(包括实际日期时间,还包括时区)返回.
我已在控制器中使用{Carbon / Carbon}.我也在模型中定义了我的日期字段.
当我访问控制器中的日期字段时,我实际上获得了Carbon对象.但是当我将结果集作为 JSON返回时,我只看到日期时间字符串.不是时区.

目前的JSON

{
    "id": 4,"username": "purusScarlett93","firstname": null,"lastname": null,"language_id": 1,"pic": null,"email": null,"authtoken": "f54e17b2ffc7203afe345d947f0bf8ceab954ac4f08cc19990fc41d53fe4eef8","authdate": "2015-05-27 12:31:13","activation_code": null,"active": 0,"devices": [],"sports": []
}

我的希望 :)

{
  "id": 4,"authtoken":"f54e17b2ffc7203afe41d53fe4eef8","authdate": [
     {
       "datetime": "2015-05-27 12:31:13","timezone": "UTC+2"
     }
   ],"active": 0
 }

知道我在这里缺少什么吗?

这是因为所有Carbon对象都有一个__toString()函数,当您尝试将对象转换为字符串(即JSON)时会触发该函数.尝试查看是否可以在模型上创建自己的访问器,为您提供自定义数组而不是字符串.
public function getAuthdateAttribute(Carbon $authdate) {
   return [
           'datetime' => $authdate->toDateTimeString(),'timezone' => 'UTC' . $authdate->offsetHours
          ];
}

正如用户Alariva指出的那样,此方法将覆盖您访问authdate的默认方式;因此,如果您想访问原始Carbon对象,可能需要为此创建一种特殊方法.

或者你可能有点聪明并做这样的事情:

public function getAuthdateAttribute(Carbon $authdate) {
   return [
           'datetime' => $authdate,'timezone' => 'UTC' . $authdate->offsetHours
          ];
}

然后访问原始对象:$carbon = $this-> authdate [‘datetime’]

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读