日期:2014-05-16  浏览次数:20517 次

JavaScript如何实现查找字符串内的所有时间替换为人性化的时间显示方式?
目的在于把一段字符串,如“…………发表于2010-04-26 12:00:00…………发表于2010-04-27 13:30:05……”替换成类似于“…………发表于1天前…………发表于1小时前…………”这样的人性化显示方式。请问如何实现?
最好是用正则表达式,如果不行用其他方式也是可以的。
如果题目有没解释清的地方可以再提问。。先谢谢各位。

------解决方案--------------------
哪用得着正则表达式???、
使用现在的实际时间减去发表时间,不就得了。
------解决方案--------------------
JScript code
<script>
var str="………… 2010-04-26 12:00:00………… 2010-04-27 12:30:05……";
var arr= str.match(/\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}/g);
str=str.replace(/(\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2})/g,
    function($1){
        var d=new Date($1.replace(/[-]/g,"/"));
        var day=parseInt((new Date()-d)/(1000*60*60*24));
        var hour=parseInt((new Date()-d)/(1000*60*60));
        if(day>0)return day+"days before";
        return hour+"hours before";
    });
alert(str);
</script>

------解决方案--------------------
var s=“…………发表于2010-04-26 12:00:00…………发表于2010-04-27 13:30:05……”;
s.replace(/\d{4}-\d{2}-\d{2}\s*\d{2}:\d{2}:\d{2}/mg, function(dateAndTime) {
 // 在这里进行时间差计算 返回比如:1天前
 return( "1天前" );
});
------解决方案--------------------
这样的功能在服务器端处理比较好
------解决方案--------------------

<span id="time01">发表于2010-04-26 12:00:00</span>
<span id="time02">发表于2010-04-26 12:00:00</span>
<span id="time03">发表于2010-04-26 12:00:00</span>

比较笨的方法: 每个时间加个 标签吧

循环修改:
当前时间 - 发表时间,结果
------解决方案--------------------
我觉得直接去当时服务器的时间就可以,不要这么麻烦
------解决方案--------------------
发表于<span id="time01">2010-04-26 12:00:00</span>
发表于<span id="time02">2010-04-26 12:00:00</span>
发表于<span id="time03">2010-04-26 12:00:00</span>

var len = 100 ; //长度获取

for(var i=0;i<len;i++){
enddata = new Data();
截取字符串
var text = document.getElementById('time'+i).innerHTML ;
time = enddata - text ; // 

document.getElementById('time'+i).innerHTML = "time " ;
}