js日期处理函数 日期格式化 当前日期 日期相差天数等

所引用的博客:
js计算月份代码 上个月-下个月
JS中增加日期格式化原型函数之prototype

/**
 * 1.日期格式化 new Date().Format("yyyy-MM-dd");
 *
 * 2.获取两个日期的相差天数 getDateDifference("2020-03-02","2020-07-01");
 *
 * 3.获取指定日期的前一天 getYesterdayDate("2020-03-01");
 *
 * 4.获取日期所在月份的天数 getMonthDays("2020-02-01");
 *
 * 5.获取指定日期的上个月相同日期 getPreMonth("2020-02-01");
 *
 * 6.获取指定日期的下个月相同日期 getNextMonth("2020-02-01");
 *
 */


/**
 *  javascript Date format(js日期格式化)
 *  对Date的扩展,将 Date 转化为指定格式的String
     月(M)、日(d)、小时(h)、分(m)、秒(s)、季度(q) 可以用 1-2 个占位符,
     年(y)可以用 1-4 个占位符,毫秒(S)只能用 1 个占位符(是 1-3 位的数字)
     例子:
     (new Date()).Format("yyyy-MM-dd hh:mm:ss.S") ==> 2006-07-02 08:09:04.423
     (new Date()).Format("yyyy-M-d h:m:s.S")      ==> 2006-7-2 8:9:4.18

 * 调用:
    var time1 = new Date().Format("yyyy-MM-dd");
    var time2 = new Date().Format("yyyy年MM月dd日 HH:mm:ss");
 */
Date.prototype.format = function (format) {
    // 默认格式:"yyyy-MM-dd hh:mm:ss"
    if (!format) {
        format = "yyyy-MM-dd hh:mm:ss";
    }
    var date = {
        "M+": this.getMonth() + 1,    //月份
        "d+": this.getDate(),            //天
        "h+": this.getHours(),        //小时
        "H+": this.getHours(),        //小时(大写)
        "m+": this.getMinutes(),        //分
        "s+": this.getSeconds(),        //秒
        "q+": Math.floor((this.getMonth() + 3) / 3),    //季度
        "S+": this.getMilliseconds()    //毫秒
    };
    if (/(y+)/i.test(format)) {
        format = format.replace(RegExp.$1, (this.getFullYear() + '').substr(4 - RegExp.$1.length));
    }
    for (var k in date) {
        if (new RegExp("(" + k + ")").test(format)) {
            format = format.replace(RegExp.$1, RegExp.$1.length == 1
                ? date[k] : ("00" + date[k]).substr(("" + date[k]).length));
        }
    }
    return format;
}


/**
 * 获取两个日期的相差天数
 * @param sDate1 格式yyyy-MM-dd
 * @param sDate2 格式yyyy-MM-dd
 * @returns {number}
 */
function getDateDifference(sDate1, sDate2) {
    var dateSpan, iDays;
    sDate1 = Date.parse(sDate1);  // 返回 1970/1/1 午夜距离该日期时间的毫秒数
    sDate2 = Date.parse(sDate2);
    dateSpan = Math.abs(sDate2 - sDate1);
    iDays = Math.floor(dateSpan / (24 * 3600 * 1000));
    return iDays
}

/**
 * 获取指定日期的前一天
 * @param date
 * @returns {string}
 */
function getYesterdayDate(date) {
    var d = new Date(date);
    d = +d - 1000 * 60 * 60 * 24;
    d = new Date(d);
    var month = d.getMonth() + 1;
    var strDate = d.getDate();
    if (month >= 1 && month <= 9) {
        month = "0" + month;
    }
    if (strDate >= 0 && strDate <= 9) {
        strDate = "0" + strDate;
    }
    return d.getFullYear() + "-" + month + "-" + strDate;
}

/**
 * 获取日期所在月份的天数
 * @param date 格式yyyy-MM-dd
 * @returns {number}
 */
function getMonthDays(date){
    var dateArr = date.split('-');
    var d = new Date(dateArr[0], dateArr[1], 0);
    return d.getDate();
}

/**
 * 获取指定日期的上个月相同日期
 * @param date
 * @returns {string}
 */
function getPreMonth(date) {
	var arr = date.split('-');
	var year = arr[0]; //获取当前日期的年份
	var month = arr[1]; //获取当前日期的月份
	var day = arr[2]; //获取当前日期的日
	var days = new Date(year, month, 0);
	days = days.getDate(); //获取当前日期中月的天数
	var year2 = year;
	var month2 = parseInt(month) - 1;
	if (month2 == 0) {
		year2 = parseInt(year2) - 1;
		month2 = 12;
	}
	var day2 = day;
	var days2 = new Date(year2, month2, 0);
	days2 = days2.getDate();
	if (day2 > days2) {
		day2 = days2;
	}
	if (month2 < 10) {
		month2 = '0' + month2;
	}
	var t2 = year2 + '-' + month2 + '-' + day2;
	return t2;
}

/**
 * 获取指定日期的下个月相同日期
 * @param date
 * @returns {string}
 */
function getNextMonth(date) {
	var arr = date.split('-');
	var year = arr[0]; //获取当前日期的年份
	var month = arr[1]; //获取当前日期的月份
	var day = arr[2]; //获取当前日期的日
	var days = new Date(year, month, 0);
	days = days.getDate(); //获取当前日期中的月的天数
	var year2 = year;
	var month2 = parseInt(month) + 1;
	if (month2 == 13) {
		year2 = parseInt(year2) + 1;
		month2 = 1;
	}
	var day2 = day;
	var days2 = new Date(year2, month2, 0);
	days2 = days2.getDate();
	if (day2 > days2) {
		day2 = days2;
	}
	if (month2 < 10) {
		month2 = '0' + month2;
	}
	var t2 = year2 + '-' + month2 + '-' + day2;
	return t2;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值