AR查询怎么格式化时间戳? [ 2.0 版本 ]
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天前.. ... 之类的人性化的日期。。
Jason_ 补充于 2017-09-12 09:11
我是想数据从model出来之后就是格式化好的。 就是说model有没有特性直接给处理掉,不要我取出数据再去foreach处理。
最佳答案
其他 7 个回答
-
在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 条回复jsonrecode 回复于 2019-08-02 11:35 回复这种的话 我怎么在ar中操作
-
格式化时间/日期数据
默认支持一下几种格式化格式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 即可。 -
这个其实不需要在数据库层面做,数据库层面保持 原数据很重要,然后在 view这个层面做,比如在 显示的时候调用 $model->timeFormat(); 或者 如楼上的方式直接用js之类 纯前端手段进行渲染。
共 2 条回复
Jason_ 阿联酋
注册时间:2014-06-05
最后登录:2023-03-09
在线时长:106小时40分
最后登录:2023-03-09
在线时长:106小时40分
- 粉丝15
- 金钱8250
- 威望0
- 积分9310