2015-06-30 23:08:28 7102次浏览 3条回答 2 悬赏 10 金钱

如何在find()->asArray()->all()的结果中将时间戳转换成2015-06-18 16:33:23这种格式?

yii2 原封不动的 User模型

<?php

namespace backend\modules\core\models;

use Yii;
use yii\db\ActiveRecord;

class User extends ActiveRecord
{

    /**
     * @inheritdoc
     */
    public static function tableName()
    {
        return '{{%user}}';
    }

    public function attributeLabels()
    {
        return [
            'id' => Yii::t('app', '用户ID'),
            'username' => Yii::t('app', '用户名'),
            'auth_key' => Yii::t('app', '认证key'),
            'password_hash' => Yii::t('app', '密码'),
            'password_reset_token' => Yii::t('app', '密码重置令牌'),
            'mobile' => Yii::t('app', '手机'),
            'email' => Yii::t('app', '电子邮件'),
            'status' => Yii::t('app', '用户状态'),
            // created_at,updated_at为时间戳例如1434616403
            'created_at' => Yii::t('app', '创建时间'),
            'updated_at' => Yii::t('app', '更新时间'),
        ];
    }

}

最佳答案

  • koko 发布于 2015-07-05 22:14 举报

    都有时间戳了,不是在要用时间的时候转换一下就行了么?
    我理解有误?

    2 条回复
    回复于 2015-07-06 07:29 回复

    通过foreach可以单个处理,但是在用ajax的时候传递过去的时间戳需要通过js来转换成日期型,每次都这样转很麻烦的

    回复于 2015-07-06 09:15 回复

    传之前转,传之后转都是要转换的。反正都是代码做事,又不要你干预。区别就是在哪边转换效率高点。如果业务量不大,完全都可以不考虑。
    真要不想转换你就把数据库里的时间戳直接换成时间得了。

  • 回答于 2015-07-01 07:46 举报

    find是生成sql语句的,所以要像格式化时间就得用sql的DATE_FORMAT来格式化,建议不要这样做。
    可以把sql查询出来的时间,在视图里用php来格式化更通用一些。

    2 条回复
    回复于 2015-07-01 19:54 回复

    如果是直接返回JSON呢

    回复于 2015-07-02 00:01 回复

    对response设置json格式。

  • 回答于 2015-07-02 00:28 举报

    文档中貌似有种做法是这样的,但是要求不能使用asArray() queryBuilder,如下

    //in User
    public function getFormattedTime(){//具体的名字自己想啦
      return  Yii::$app->formatter->asDatetime($this->updated_at);//created_at等
    }
    //in View
    
    //假设此时拿出一篇文章
    echo $post->formattedTime;//格式化的事件
    
    //假设此时多篇文章
    foreach($posts as $post){
      echo $post->formattedTime;
    }
    

    上面的方式可以避免在view中格式化数据,实现复用,如果考虑model职责混乱,考虑将这些代码封装到行为中去。

您需要登录后才可以回答。登录 | 立即注册
qq3737002
副总裁

qq3737002 河南郑州

注册时间:2015-03-29
最后登录:2022-07-04
在线时长:59小时26分
  • 粉丝31
  • 金钱4498
  • 威望170
  • 积分6788

热门问题