YiiChina官网个性化时间是内置功能还是自己写的? [ 2.0 版本 ]
官网发帖的个性化时间显示几分钟,几小时,1天前,2天前,超过2天好像就显示日期了。
Yii自带的有asRelativeTime,可以实现几分钟,几小时,几天前,但是也有个弊端就是一直这样显示,直到显示1年前,N年前。
想知道官网的这个是如何实现的?自定义的吗?还是Yii内置功能需要二次配置参数?
最佳答案
-
我用自己写的方法,如下:
public static function date($format, $time) { $limit = time() - $time; if($limit < 10) return '刚刚'; if($limit < 60) return $limit . '秒前'; if($limit >= 60 && $limit < 3600) return floor($limit/60) . '分钟前'; if($limit >= 3600 && $limit < 86400) return floor($limit/3600) . '小时前'; if($limit >= 86400 and $limit<259200) return floor($limit/86400) . '天前'; if($limit >= 259200) return date($format,$time); }
共 1 条回复
其他 4 个回答
-
-
-
/** * 日期按时间单位返回 * @param integer $epoch_event 要处理的时间戳 * @param integer $range 要处理的时间差,时间差以外的按日期格式返回 * @param integer $level 1.只返回最接近的时间单位 * @return string */ function time_ago($epoch_event, $range = 86400, $level = 1) { $time_ago = array(); // $period = array('second', 'minute', 'hour', 'day', 'week', 'month', 'year', 'decade'); $period = array('秒', '分', '小时', '天', '周', '月', '年', '十年'); $difference = time() - $epoch_event; if ($difference >= $range) { return date('Y-m-d H:i'); } if (($difference <= 59) && ($difference !== 0)) { $time_event = $difference / 1; return $time_event . $period[0] . '前'; } elseif (($difference >= 60) && ($difference <= 3599)) { $time_event = $difference / 60; if (($difference % 60) === 0) {$add_time = '';} if (($difference % 60) !== 0) {$add_time = floor(($difference % 60) / 1) . $period[0];} if ($time_event === $level) { return $time_event . $period[1] . '前'; } else { return floor($time_event) . $period[1] . $add_time . '前'; } } elseif (($difference >= 3600) && ($difference <= 86399)) { $time_event = $difference / 3600; if (($difference % 3600) === 0) {$add_time = '';} if (($difference % 3600) !== 0) {$add_time = floor(($difference % 3600) / 60) . $period[1];} if ($time_event === $level) { return $time_event . $period[2] . '前'; } else { return floor($time_event) . $period[2] . $add_time . '前'; } } elseif (($difference >= 86400) && ($difference <= 604799)) { $time_event = $difference / 86400; if (($difference % 86400) === 0) {$add_time = '';} if (($difference % 86400) !== 0) {$add_time = floor(($difference % 86400) / 3600) . $period[2];} if ($time_event === $level) { return $time_event . $period[3] . '前'; } else { return floor($time_event) . $period[3] . $add_time . '前'; } } elseif (($difference >= 604800) && ($difference <= 2591999)) { $time_event = $difference / 604800; if (($difference % 604800) === 0) {$add_time = '';} if (($difference % 604800) !== 0) {$add_time = floor(($difference % 604800) / 86400) . $period[3];} if ($time_event === $level) { return $time_event . $period[4] . '前'; } else { return floor($time_event) . $period[4] . $add_time . '前'; } } elseif (($difference >= 2592000) && ($difference <= 31103999)) { $time_event = $difference / 2592000; if (($difference % 2592000) === 0) {$add_time = '';} if (($difference % 2592000) !== 0) {$add_time = floor(($difference % 2592000) / 604800) . $period[4];} if ($time_event === $level) { return $time_event . $period[5] . '前'; } else { return floor($time_event) . $period[5] . $add_time . '前'; } } elseif (($difference >= 31104000) && ($difference <= 311039999)) { $time_event = $difference / 31104000; if (($difference % 31104000) === 0) {$add_time = '';} if (($difference % 31104000) !== 0) {$add_time = floor(($difference % 86400) / 2592000) . $period[5];} if ($time_event === $level) { return $time_event . $period[6] . '前'; } else { return floor($time_event) . $period[6] . $add_time . '前'; } } elseif ($difference >= 311040000) { return $period[7] . '前'; } else { return '刚刚'; // in case $epoch_event gets set to time(); } return $time_ago; }
共 1 条回复 -
mydzoo
注册时间:2017-01-05
最后登录:2022-03-29
在线时长:53小时40分
最后登录:2022-03-29
在线时长:53小时40分
- 粉丝4
- 金钱2075
- 威望10
- 积分2705