/**
* 时间轴函数,单位以unix时间戳计算
* @param int $pubtime 发布时间
*/
function timeShaft($pubtime) {
$time = time ();
/** 如果不是同一年 */
if (idate ( 'Y', $time ) != idate ( 'Y', $pubtime )) {
return date ( 'Y年m月d日', $pubtime );
}
/** 以下操作同一年的日期 */
$seconds = $time - $pubtime;
$days = idate ( 'z', $time ) - idate ( 'z', $pubtime );
/** 如果是同一天 */
if ($days == 0) {
/** 如果是一小时内 */
if ($seconds < 3600) {
/** 如果是一分钟内 */
if ($seconds < 60) {
if (3 > $seconds) {
return '刚刚';
} else {
return $seconds . '秒前';
}
}
return intval ( $seconds / 60 ) . '分钟前';
}
return idate ( 'H', $time ) - idate ( 'H', $pubtime ) . '小时前';
}
/** 如果是昨天 */
if ($days == 1) {
return '昨天' . date ( 'H:i', $pubtime );
}
/** 如果是前天 */
if ($days == 2) {
return '前天 ' . date ( 'H:i', $pubtime );
}
/** 如果是7天内 */
if ($days < 7) {
return $days. '天前';
}
/** 超过7天 */
return date ( 'n月j日 H:i', $pubtime );
}
echo timeShaft(time());函数tranTime()中的参数$time必须为Unix时间戳,如果不是请先用strtotime()将其转换成Unix时间戳。上面的代码一看就明白了,不用再多述。
调用函数,直接输出:
$times="1286861696 "; echo timeShaft($times);