javascript Date加减函数

基础知识,抄袭只会知其然而不知其所以然.

/*
判断是否为闰年(366天),平年365天
遵循的规律为:  四年一闰,百年不闰,四百年再闰.
*/
Date.prototype.isleap = function () {
    var y = this.getFullYear();
    return (((y) % 4) == 0 && (((y) % 100) != 0 || ((y) % 400) == 0))
};

/*
在日期上加减天数
day:正值表示增加几天,负值为减少几天
示例:new Date().addDay(-15); //15天前
*/
Date.prototype.addDay = function (day) {
    this.setTime(this.getTime() + (day * 24 * 3600 * 1000));
};

/*
在日期上增加月份
month:正值表示增加几个月,负值为减少几个月
示例:new Date().addMonth(-12); //一年前

一三五七八十腊(十二月),三十一日永不差;
四六九冬(十一月)三十日,唯有二月二十八(闰年二十九)
*/
Date.prototype.addMonth = function (month) {
    var day = 0;
    var daymilliseconds = 86400000;//24 * 3600 * 1000;
    var count = Math.abs(month);
    for (var i = 0 ; i < count ; ++i) {
        var mon = this.getMonth() + 1; //0-11
        if (mon == 4 || mon == 6 || mon == 9 || mon == 11) {//四六九冬(十一月)三十日
            day = 30
        } else if (mon == 2) {//唯有二月二十八(闰年二十九).
            day = this.isleap() ? 29 : 28;
        } else {  //一三五七八十腊(十二月),三十一日永不差;
            day = 31;
        }
        var milliseconds = day * daymilliseconds;
        milliseconds = (month >= 0 ? milliseconds : 0 - milliseconds);
        this.setTime(this.getTime() + milliseconds);
    }
};

猜你喜欢

转载自blog.csdn.net/kmblack1/article/details/82148984