应用场景
浏览实时信息网站时,总会看到发布时间,是这么显示的 例如 刚刚、几秒前,几分钟,几天,日期 ...,提供以下处理方案
服务端 ——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();
}
}
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。