应用场景
浏览实时信息网站时,总会看到发布时间,是这么显示的 例如 刚刚、几秒前,几分钟,几天,日期 ...,提供以下处理方案
服务端 ——PHP
客户端 ——JavaScript
处理方案
服务端 ——PHP
使用服务器端实现,很方便,把时间戳存储到数据库,具有时间统一的优点,但当使用ajax请求数据库直接返回json数据时,无法使用。
/*** [dataStr description]* @author 邱先生 * @copyright 烟火里的尘埃* @version [V1.0版本] * @date 2016-07-13* @param [type] $date [时间戳]* @return [type] [description]*/static public function dataStr($date){if((time()-$date)<60*10){//十分钟内echo '刚刚';}elseif(((time()-$date)<60*60)&&((time()-$date)>=60*10)){//超过十分钟少于1小时$s = floor((time()-$date)/60);echo $s."分钟前";}elseif(((time()-$date)<60*60*24)&&((time()-$date)>=60*60)){ //超过1小时少于24小时$s = floor((time()-$date)/60/60);echo $s."小时前";}elseif(((time()-$date)<60*60*24*3)&&((time()-$date)>=60*60*24)){ //超过1天少于3天内$s = floor((time()-$date)/60/60/24);echo $s."天前";}else{ //超过3天echo date("Y/m/d",$date);}}
客户端 ——JavaScript
适用于ajax请求服务器直接返回json数据,处理展示的情况,但时间的计算是根据客户端时间为准计算(现在都是智能时代,可忽略),有一个问题是,PHP存储到数据库的时间戳是10位的,但js的时间戳不是。以下函数已经做了处理。
/*** [Datestr 时间戳转字符串格式]* @author 邱先生* @copyright 烟火里的尘埃* @version [V1.0版本] * @date 2016-06-26* @param {[type]} date [传入php 时间戳]*/
function dateStr(date){//获取js 时间戳var time=new Date().getTime();//去掉 js 时间戳后三位,与php 时间戳保持一致time=parseInt((time-date*1000)/1000);//存储转换值 var s;if(time<60*10){//十分钟内return '刚刚';}else if((time<60*60)&&(time>=60*10)){//超过十分钟少于1小时s = Math.floor(time/60);return s+"分钟前";}else if((time<60*60*24)&&(time>=60*60)){ //超过1小时少于24小时s = Math.floor(time/60/60);return s+"小时前";}else if((time<60*60*24*3)&&(time>=60*60*24)){ //超过1天少于3天内s = Math.floor(time/60/60/24);return s+"天前";}else{ //超过3天var date= new Date(parseInt(date) * 1000);return date.getFullYear()+"/"+(date.getMonth()+1)+"/"+date.getDate();}
}