通常有的新闻展示时间的方式不想直接date日期的方式,
才有几秒ago ,几小时ago,下面就来看看 php的实现代码吧:
/**
*
* 格式化 发布时间成 xx minutes ago的方式
* @param mixed $time
* @return string
*/
static public function tranTime($time)
{
$time = time() - $time;
if ($time < 60) { //秒
$str = sprintf(('a moment ago'));
}elseif ($time < 60 * 60) { //分
$min = floor($time/60);
if($min==1)
$str = sprintf(('%s minute ago'), $min);
else
$str = sprintf(('%s minutes ago'), $min);
}elseif ($time < 60 * 60 * 24) { //小时
$h = floor($time/(60*60));
if($h==1)
$str = sprintf(('%s hour ago'), $h) ;
else
$str = sprintf(('%s hours ago'), $h) ;
}elseif ($time < 60 * 60 * 24 * 30) { //一个月内的
$d = floor($time/(60*60*24 ));
if($d==1)
$str = sprintf(('yesterday'), $d) ;
else
$str = sprintf(('%s days ago'), $d) ;
}elseif($time < 60 * 60 * 24 * 365) {
$m = floor($time/(60 * 60 *24 *30 ));
if($m==1)
$str = sprintf(('%s month ago'), $m) ;
else
$str = sprintf(('%s months ago'), $m) ;
}else {
$y = floor($time/(60 * 60 *24 *365 ));
if($y==1)
$str = sprintf(('%s year ago'), $y) ;
else
$str = sprintf(('%s years ago'), $y) ;
}
return $str;
}
这里还做个普及 strtotime的强大之处。
date = strtotime('2 hours ago' ); 可以直接换算得到 日期哦。
所以,上面的格式化时间字符串,可以直接转换成 相对当前日期的 具体日历时间;
好了,本文全部内容结束,感谢您的阅读。希望能帮助到你。