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

解决方案 »

  1.   

    <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>
      

  2.   

    这個多余var arr= str.match(/\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}/g);
      

  3.   

    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天前" );
    });
      

  4.   


    <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>比较笨的方法:  每个时间加个  标签吧循环修改:
    当前时间 - 发表时间,结果
      

  5.   

    发表于<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 " ;
    }