时间规则,包括long时间转化成日期

时间:2021-09-06 14:53:31


要求:

一小时以内:
        小于等于15分钟: 显示刚刚,例如:甘冈
        大于15分钟小于1小时,显示具体的分钟差值,例如:23分钟以前

大于等于一小时,且小于一天以内:
       大于等于1天,且小于2天,则显示昨天,例如:昨天
       大于等于2天,且小于1周,则显示几天前,例如:3天前。

超过一周的情况,就显示具体的日期,例如:2016-06-20



css

span{
    color: #999;
    font-size: 12px;
}


js

time = gg.util.formatDate(list[i].createdAt);


function formatDate(time){
            var ts=new Date().getTime()-time;
            if(ts<900000){
                return '剛剛';
            }else if(ts<3600000){
                return parseInt(ts/60000)+'分鐘前';
            }else if(ts<86400000){
                return parseInt(ts/3600000)+'小時前';
            }else if(ts<172800000){
                return '昨天';
            }else if(ts<604800000){
                return parseInt(ts/86400000)+'天前';
            }else{
                return getFormatDateByLong(time, "yyyy-MM-dd");
            }
        }

Date.prototype.format = function (format) {  
        var o = {  
            "M+": this.getMonth() + 1,  
            "d+": this.getDate(),  
            "h+": this.getHours(),  
            "m+": this.getMinutes(),  
            "s+": this.getSeconds(),  
            "q+": Math.floor((this.getMonth() + 3) / 3),  
            "S": this.getMilliseconds()  
        }  
        if (/(y+)/.test(format)) {  
            format = format.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));  
        }  
        for (var k in o) {  
            if (new RegExp("(" + k + ")").test(format)) {  
                format = format.replace(RegExp.$1, RegExp.$1.length == 1 ? o[k] : ("00" + o[k]).substr(("" + o[k]).length));  
            }  
        }  
        return format;  
    }  
    /**   
    *转换日期对象为日期字符串   
    * @param date 日期对象   
    * @param isFull 是否为完整的日期数据,   
    *               为true时, 格式如"2000-03-05 01:05:04"   
    *               为false时, 格式如 "2000-03-05"   
    * @return 符合要求的日期字符串   
    */    
    function getSmpFormatDate(date, isFull) {  
        var pattern = "";  
        if (isFull == true || isFull == undefined) {  
            pattern = "yyyy-MM-dd hh:mm:ss";  
        } else {  
            pattern = "yyyy-MM-dd";  
        }  
        return getFormatDate(date, pattern);  
    }  
    /**   
    *转换当前日期对象为日期字符串   
    * @param date 日期对象   
    * @param isFull 是否为完整的日期数据,   
    *               为true时, 格式如"2000-03-05 01:05:04"   
    *               为false时, 格式如 "2000-03-05"   
    * @return 符合要求的日期字符串   
    */    
  
    function getSmpFormatNowDate(isFull) {  
        return getSmpFormatDate(new Date(), isFull);  
    }  
    /**   
    *转换long值为日期字符串   
    * @param l long值   
    * @param isFull 是否为完整的日期数据,   
    *               为true时, 格式如"2000-03-05 01:05:04"   
    *               为false时, 格式如 "2000-03-05"   
    * @return 符合要求的日期字符串   
    */    
  
    function getSmpFormatDateByLong(l, isFull) {  
        return getSmpFormatDate(new Date(l), isFull);  
    }  
    /**   
    *转换long值为日期字符串   
    * @param l long值   
    * @param pattern 格式字符串,例如:yyyy-MM-dd hh:mm:ss   
    * @return 符合要求的日期字符串   
    */    
  
    function getFormatDateByLong(l, pattern) {  
        return getFormatDate(new Date(l), pattern);  
    }  
    /**   
    *转换日期对象为日期字符串   
    * @param l long值   
    * @param pattern 格式字符串,例如:yyyy-MM-dd hh:mm:ss   
    * @return 符合要求的日期字符串   
    */    
    function getFormatDate(date, pattern) {  
        if (date == undefined) {  
            date = new Date();  
        }  
        if (pattern == undefined) {  
            pattern = "yyyy-MM-dd hh:mm:ss";  
        }  
        return date.format(pattern);  
    }  
   
    //alert(getSmpFormatDate(new Date(1279849429000), true));  
    //alert(getSmpFormatDate(new Date(1279849429000),false));      
    //alert(getSmpFormatDateByLong(1279829423000, true));  
    //alert(getSmpFormatDateByLong(1279829423000,false));      
    //alert(getFormatDateByLong(1279829423000, "yyyy-MM"));  
    //alert(getFormatDate(new Date(1279829423000), "yy-MM"));  
    //alert(getFormatDateByLong(1279849429000, "yyyy-MM hh:mm"));
html = "";
html += "<span class='pull-right'>"+time+"</span>";