js,将日期时分秒等格式化和转化

1.将js Date对象格式化为指定格式,添加一个原型方法

/**
 * 返回指定format的string
 * format eg:'yyyy-MM-dd hh:mm:ss'
 **/
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;
}

使用如:
new Date().format('yyyy-MM-dd');    // echo: '2015-12-01'

2.得到昨天 (永远相对于今天的前一天)

// 得到昨天的日期 返回昨天
function yesterday() {
    var today = new Date();
    var the_yesterday = today.setDate(today.getDate() - 1);
    return the_yesterday;
}

3. 得到上一个月的今天

// 得到近一个月 返回上一个月的今天
function lastMonth() {
    var today = new Date();
    var month = today.getMonth();
    var the_last_month;
    if (month == 0) {
        the_last_month = today.setMonth(11);
    } else {
        var the_last_month = today.setMonth(month - 1);
    }
    the_last_month =  new Date(the_last_month).format('yyyy-MM-dd');
    return the_last_month;
}

4.得到指定格式的最近一周 返回一个数组

// 得到近一周 返回数组   (note: 这里的format使用了上面的用来format原型方法)
function lastWeek(format) {
    var today = new Date();
    var the_week = [];
    var format = format || 'yyyy-MM-dd';
    for (var i = 1; i < 8; i++) {
        var temp = today.setDate(today.getDate()-1);
        temp = new Date(temp).format(format);
        the_week.unshift( temp );
    };
    return the_week;
}

5.得到近n天 返回一个数组

// 得到近n天 返回数组
function lastNDay(days,format) {
    var today = new Date();
    var the_days = [];
    var format = format || 'yyyy-MM-dd';
    for (var i = 1; i < days+1; i++) {
        var temp = today.setDate(today.getDate()-1);
        temp = new Date(temp).format(format);
        the_days.unshift( temp );
    };
    return the_days;
}

//使用如
lastNDay(7);  // 返回最近一周的日期数组 format参数可选

// [ '2011-11-01', '2011-11-02','2011-11-03','2011-11-04','2011-11-05','2011-11-06','2011-11-07' ]

6.把毫秒转换成时长

// 把毫秒转换成时长
// 返回 1.若小于等于60秒,显示秒数
//     2.若大于1分钟小于1小时,显示分钟
//     3.若大于1小时,显示x小时x分钟
function MillisecondToTime(msd) {
    var time = parseInt(msd) / 1000;
    if (time <= 60) {
        time = time + '秒';
        return time;
    } else if (time > 60 && time < 60 * 60) {
        time = parseInt(time / 60) + "分钟";
        return time;
    } else {
        var hour = parseInt(time / 3600) + "小时";
        var minute = parseInt(parseInt(time % 3600) / 60) + "分钟";
        time = hour + minute;
        return time;
    }
}
原文地址:https://www.cnblogs.com/isdom/p/webclips017.html