How to format time since xxx e.g. “4 minutes ago” similar to Stack Exchange sites

后端 未结 25 1979
遥遥无期
遥遥无期 2020-11-22 12:57

The question is how to format a JavaScript Date as a string stating the time elapsed similar to the way you see times displayed on Stack Overflow.

e.g.<

25条回答
  •  暖寄归人
    2020-11-22 13:10

    from now, unix timestamp param,

    function timeSince(ts){
        now = new Date();
        ts = new Date(ts*1000);
        var delta = now.getTime() - ts.getTime();
    
        delta = delta/1000; //us to s
    
        var ps, pm, ph, pd, min, hou, sec, days;
    
        if(delta<=59){
            ps = (delta>1) ? "s": "";
            return delta+" second"+ps
        }
    
        if(delta>=60 && delta<=3599){
            min = Math.floor(delta/60);
            sec = delta-(min*60);
            pm = (min>1) ? "s": "";
            ps = (sec>1) ? "s": "";
            return min+" minute"+pm+" "+sec+" second"+ps;
        }
    
        if(delta>=3600 && delta<=86399){
            hou = Math.floor(delta/3600);
            min = Math.floor((delta-(hou*3600))/60);
            ph = (hou>1) ? "s": "";
            pm = (min>1) ? "s": "";
            return hou+" hour"+ph+" "+min+" minute"+pm;
        } 
    
        if(delta>=86400){
            days = Math.floor(delta/86400);
            hou =  Math.floor((delta-(days*86400))/60/60);
            pd = (days>1) ? "s": "";
            ph = (hou>1) ? "s": "";
            return days+" day"+pd+" "+hou+" hour"+ph;
        }
    
    }
    

提交回复
热议问题