2017-09-11 23:19:55 3462次浏览 8条回答 0 悬赏 10 金钱
public function getTagList($uid, $offset, $pagesize){
        $model = self::find()
            ->select(['id', 'title', 'likenum', 'newstime'])
            ->from('{{%tag_data}}')
            ->where(['userid' => $uid])
            ->asArray()
            ->all();
        return $model;
    }

上面的方法返回的字段中 newstime 是一个时间戳,怎么把他转换成像微博那的那种日期,
刚刚.. 3分钟前.. 5分钟前.. 1天前.. ... 之类的人性化的日期。。

补充于 2017-09-12 09:11

我是想数据从model出来之后就是格式化好的。 就是说model有没有特性直接给处理掉,不要我取出数据再去foreach处理。

最佳答案

  • 假装是大佬 发布于 2017-09-12 13:40 举报

    没有存好的方法直接拿来用 因为时间的显示也是实时性的 这种一般有两种方式 一种在数据处理层将你的时间戳 与当前的时间的相减 将得到的时间戳去判断如果是在60分钟内 显示为多少分钟前 同理如果是小时 还是天 月 年都一样 具体的数据处理 可以在model层封装个函数去调用 或者直接在控制器controller层中处理 上面是后台处理 可以使用js进行处理 方法相似 不过是去用js处理数据罢了

    3 条回复
    回复于 2017-09-14 14:56 回复

    写的API想直接在服务端计算好, 不让客户端去计算。

    回复于 2017-09-15 09:55 回复

    那你就在后台控制器中做一个修改 如果应用的次数比较多 那就自己封装一下 调用就好了

    回复于 2017-09-15 09:56 回复

    不用担心前端数据拿到是什么样的 你用postman去看 只要接口返回的数据和格式没问题 不用管api传过去会是什么样

  • 回答于 2017-09-12 09:02 举报

    拿当前时间戳去相减啊,大于几分钟就输出几分钟

  • 回答于 2017-09-12 15:53 举报

    这种 显示 通常都在前端 赋值的时候进行处理

  • 回答于 2017-09-12 16:16 举报

    在sql层面也可以处理吧,case when处理 ,把newstime字段改成类似这样

    		CASE 
    		WHEN `newstime`-`{当前时间戳}`<3*60--显示刚刚的判断条件
    			THEN '刚刚'
    		WHEN `newstime`-`{当前时间戳}`>3*60 AND `newstime`-`{当前时间戳}`<5*60--显示3分钟前的判断条件
    			THEN '3分钟前'
    			......
    		END as newstime;
    
    2 条回复
    回复于 2017-09-14 14:54 回复

    是种办法,但是感觉不是很简介。

    回复于 2019-08-02 11:35 回复

    这种的话 我怎么在ar中操作

  • 回答于 2017-09-13 11:01 举报

    格式化时间/日期数据
    默认支持一下几种格式化格式

    date: 这个变量将被格式化为日期 January 01, 2014.
    time: 这个变量将被格式化为时间 14:23.
    datetime: 这个变量将被格式化为日期+时间 January 01, 2014 14:23.
    timestamp: 这个变量将被格式化为 UNIX 时间戳 unix timestamp, 例如 1412609982.
    relativeTime: 这个变量将被格式化为人类可读的当前相对时间 1 hour ago.
    duration: 这个变量将被格式化为人类可读的时长 1 day, 2 minutes.
    时间/日期数据默认使用 date, time, datetime 方法进行格式化, 你可以对他们进行一些自己的配置,只需在配置文件里配置 dateFormat, timeFormat, 和 datetimeFormat 即可。

  • 回答于 2017-09-13 18:04 举报

    我觉得返回到前端一个当前的时间戳,和一个发表的时间戳。然后用JS处理比较简单。比在模型中处理更规范简单一些。

    1 条回复
    回复于 2017-09-14 14:55 回复

    我是api输出。想直接处理完给客户端

  • 回答于 2017-09-13 18:07 举报

    这个其实不需要在数据库层面做,数据库层面保持 原数据很重要,然后在 view这个层面做,比如在 显示的时候调用 $model->timeFormat(); 或者 如楼上的方式直接用js之类 纯前端手段进行渲染。

    2 条回复
    回复于 2017-09-14 14:54 回复

    我写API给app用。 如果客户端做,可能会不准确。

    回复于 2017-09-19 10:02 回复

    一般都是在 客户端做的,因为你要考虑一种情况,如果19.01 拉的数据, 19.05的时候还显示1分钟以前? 应该自动变成5分钟以前了,反之如果你们不考虑这种变化,那么上面说的少少不准确又算什么了,是吧?

  • 回答于 2017-09-14 08:49 举报

    直接百度下,php时间友好显示

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

Jason_ 阿联酋

注册时间:2014-06-05
最后登录:2023-03-09
在线时长:106小时40分
  • 粉丝15
  • 金钱8250
  • 威望0
  • 积分9310

热门问题