javascript学习指南|JavaScript计算日期时间的方法

时间:2020-09-19  来源:mysql教程  阅读:

由于博客全部改版为PJAX(pushState + ajax)。因此,类似于作品等列表都是使用接口读的,后台返回的时间是一个MySQL时间戳,并不能直接使用,需要格式化成指定的字符串。以前这些都是后台搞完返回,现在需要在前端去实现,总结了下博客改版过程中使用到的关于日期时间的方法,主要有parseTime格式化和timeAgo多久之前两个方法。前者就是我们常见到的类似于2015-12-30 12:00、12月20日这种,后者则是类似于2天前,3周前这种,都是比较常用的。

parseTime()

/**
 * 格式化日期
 * @param timestamp 数据库时间戳
 * @param format  如 y-m-d h:i:s
 * @param full  是否补零  5 => 05
 * @returns {string}
 */
function parseTime(timestamp,format,full){
    full = full != undefined ? full : true;
    timestamp = timestamp * 1000;
    if(!format) format = "y-m-d h:i:s";
    format = format.toLowerCase();
    function zeroFull(str){
        return full ? (str >= 10 ? str : ("0" + str)) : str;
    }
    var time = new Date(timestamp),
        o = {
            y : time.getFullYear(),
            m : zeroFull(time.getMonth() + 1),
            d : zeroFull(time.getDate()),
            h : zeroFull(time.getHours()),
            i : zeroFull(time.getMinutes()),
            s : zeroFull(time.getSeconds())
       };
    return format.replace(/([a-z])(\1)*/ig,function(m){
        return o[m];
    });
}
console.log(parseTime(1451460186,"y年m月d日 h:i"));
//2015年12月30日 15:23
console.log(parseTime(1451460186,"y-m-d h:i"));
//2015-12-30 15:23
console.log(parseTime(1451460186,"m-d h:i"));
//12-30 15:23
console.log(parseTime(1451460186,"h:i"));
//15:23 1


timeAgo()

/**
 * 多久之前
 * @param stamp 数据库时间戳
 * @param format 对于不在范围的日期格式化 如 y-m-d h:i:s
 * @param max 最大级别 默认 月
 * @returns {string}
 */
function timeAgo(stamp,format,max) {
    max = max ? parseInt(max) : 2592000;
    var now = (new Date() * 1) / 1000,
       time = now - stamp,
       text = {
        31536000 : "年",
        2592000  : "个月",
        604800   : "周",
        86400    : "天",
        3600     : "小时",
        60       : "分钟",
        1        : "秒"
    };
    var back = "";
    if(time <= max){
        for(var k in text){
            var c = Math.floor(time / parseInt(k));
            if( 0 != c ){
                if(text[k] == "天" && c <= 2){
                    back =  (((c == 1) ? "昨天" : "前天") + parseTime(stamp,"h:i"));
                }else{
                    back = (c + text[k] + "前");
                }
            }
        }
    }else{
        back = parseTime(stamp,format);
    }
    return back;
}
console.log(timeAgo(1451460186,"m-d h:i"));
//3小时前

javascript学习指南|JavaScript计算日期时间的方法

http://m.bbyears.com/shujuku/99707.html

推荐访问:
相关阅读 猜你喜欢
本类排行 本类最新