详细时间提醒信息

我们经常在社交网络上面看到很人性化的时间提示比如,你的朋友几分钟前更新了什么,你的朋友几天前更新了什么信息.

这些小tips比直接显示某年某月人性化很多.我们可以用不同的程序实现这种效果.下面我是通过前台javascript来实现这种效果.

这样可以减少后台服务器的压力.

javascript实现代码如下:

 

// 本函数实现了更人性化的时间提示
//
@param date_str 传递过来的时间,时间格式如:2010-12-14 18:36:09
function date_parser_diff_return(date_str){
var date=new Date();
if(typeof(date_str)!='string')return date;
var date_arr=date_str.split(new RegExp("[:| |-]","ig"));
var date_obj = new Date(date_arr[0],date_arr[1]-1,date_arr[2],date_arr[3],date_arr[4],date_arr[5]);
var date_seconddiff=( new Date().getTime()-date_obj.getTime() ) /1000 ;
date_str_w='';
if(date_seconddiff <60*30)date_str_w= Math.ceil(date_seconddiff/60)+"分钟前 ";
if(!date_str_w && date_seconddiff <3600)date_str_w= "1小时前 ";
if(!date_str_w && date_seconddiff <3600*2)date_str_w= "2小时前 ";
if(!date_str_w && date_seconddiff <3600*3)date_str_w= "3小时前 ";
if(!date_str_w && date.getFullYear()==date_arr[0] && date.getMonth()==date_arr[1]-1 && date.getDate()==date_arr[2])
date_str_w= "今天 "+date_arr[3]+':'+date_arr[4];
if(!date_str_w && date.getFullYear()==date_arr[0] && date.getMonth()==date_arr[1]-1 && date.getDate()-1==date_arr[2])
date_str_w= "昨天 "+date_arr[3]+':'+date_arr[4];
if(!date_str_w && date.getFullYear()==date_arr[0] && date.getMonth()==date_arr[1]-1 && date.getDate()-2==date_arr[2])
date_str_w= "前天 "+date_arr[3]+':'+date_arr[4];
if(!date_str_w && date.getFullYear()==date_arr[0] && date.getMonth()==date_arr[1]-1
date_str_w= (date.getMonth()+1)+""+ date_arr[2]+""+date_arr[3]+':'+date_arr[4];
if(!date_str_w && date.getFullYear()==date_arr[0]) 
date_str_w= "今年 " + date_arr[1]+""+ date_arr[2]+""+date_arr[3]+':'+date_arr[4];
if(!date_str_w && date.getFullYear()-1==date_arr[0]) 
date_str_w= "去年 " + date_arr[1]+""+ date_arr[2]+""+date_arr[3]+':'+date_arr[4];
document.write(date_str_w);
};

 

 

 

Tips:这个函数要注意的地方几点

      1.date_str.split(new RegExp("[:| |-]","ig")); 

      讲传递过来的字符串正则匹配成数组使用可以使用: ' '(空) -这3中其他的任意一种来隔开

      2.var date_obj = new Date(date_arr[0],date_arr[1]-1,

                        date_arr[2],date_arr[3],date_arr[4],date_arr[5]);

javascript操作时间需要注意的地方

操作日期

通过使用针对日期对象的方法,我们可以很容易地对日期进行操作。

在下面的例子中,我们为日期对象设置了一个特定的日期 (
200889 日):

var myDate=new Date()
myDate.setFullYear(
2008,7,9)

注意:表示月份的参数介于
011 之间。也就是说,如果希望把月设置为 8 月,则参数应该是 7

在下面的例子中,我们将日期对象设置为
5 天后的日期:

var myDate=new Date()
myDate.setDate(myDate.getDate()
+5)

注意:如果增加天数会改变月份或者年份,那么日期对象会自动完成这种转换。
比较日期

日期对象也可用于比较两个日期。

下面的代码将当前日期与
200889 日做了比较:

var myDate=new Date();
myDate.setFullYear(
2008,7,9);

var today = new Date();

if (myDate>today)
{
alert(
"Today is before 9th August 2008");
}
else
{
alert(
"Today is after 9th August 2008"
);
}

 

posted on 2010-12-15 11:47  justcoder  阅读(315)  评论(0编辑  收藏  举报

导航