js自然年月的加减函数

varTimeUtils = ({

getOffsetYear: function (beginDate, XYear) {

return this.getOffsetMonth(beginDate, XYear * 12);

},

getOffsetMonth: function (beginDate, XMonth) {

var matrix = beginDate.substr(0, 10).split("-");

var year = matrix[0] * 1;

var month = matrix[1] * 1;

var day = matrix[2] * 1;

var newMonth = month + XMonth;

if (newMonth > 12 || newMonth < 1) {

year += newMonth / 12;

newMonth = newMonth % 12;

if (newMonth === 0) {

year--;

newMonth = 12;

}

}

var newDay = day;

if ((newDay > this.getLastDayOfMonth(year, newMonth)) || (day === this.getLastDayOfMonth(year, month) )) {

newDay = this.getLastDayOfMonth(year, newMonth);

}

var date = new Date(year, newMonth - 1, newDay);

return date.format("yyyy-MM-dd");

},

getEndXYear: function (beginDate, XYear) {

return this.getEndXMonth(beginDate, XYear * 12);

},

getEndXMonth: function (beginDate, XMonth) {

var matrix = beginDate.substr(0, 10).split("-");

var year = matrix[0] * 1;

var month = matrix[1] * 1;

var day = matrix[2] * 1;

var newMonth = month + XMonth;

if (newMonth > 12 || newMonth < 1) {

year += newMonth / 12;

newMonth = newMonth % 12;

if (newMonth === 0) {

year--;

newMonth = 12;

}

}

var newDay = day - 1;

if (newDay > this.getLastDayOfMonth(year, newMonth)) {

newDay = this.getLastDayOfMonth(year, newMonth);

}

var date = new Date(year, newMonth - 1, newDay);

return date.format("yyyy-MM-dd");

},

getLastDayOfMonth: function (year, month) {

year = year * 1;

month = month * 1;

//大月

var day = 31;

//小月

if (month === 4 || month === 6 || month === 9 || month === 11) {

day = 30

}

//2月

else if (month === 2) {

if (((year % 4) === 0) && ((year % 100) !== 0) || ((year % 400) === 0)) {

day = 29

} else {

day = 28

}

}

return day;

},

//判断是否为闰年

isLeapYear: function (year) {

year = year * 1;

if (((year % 4) === 0) && ((year % 100) !== 0) || ((year % 400) === 0)) {

return (true);

} else {

return (false);

}

},

})

推荐阅读更多精彩内容

  • var regexEnum = { intege : "^-?[1-9]\\d*$", // 整数 intege1...
    a_foo阅读 769评论 0 4
  • 不支持上传文件,所以就复制过来了。作者信息什么的都没删。对前端基本属于一窍不通,所以没有任何修改,反正用着没问题就...
    全栈在路上阅读 1,734评论 0 2
  • [Js获取当前日期时间及其它操作] 日期时间脚本库方法列表 js代码://--------------------...
    JS_swh阅读 305评论 0 3
  • 今天看到一个公式:自律+坚持=牛B,刚开始觉得这公式太牛了,简直是真理,后来发现要有个前提,就是得在真心想做的一件...
    ymmstory阅读 175评论 0 0
  • 热:大炉夏火升天旺, 辐射身心见白光。 若把蛋朝阳下放, 瞬间蒸煮变熟黄。
    寒梅热血阅读 37评论 0 0
  • 今天碰到的一个有意思的问题是—— 在船上,姑父讲: 我在想这么大的船是怎么给他们运进来的?都没有路呢。 我怔住: ...
    萝卜正在脱水阅读 87评论 0 0
  • 师弟今天问我 “师姐,你想过换工作吗? 你听说了吗 小云辞职了” “是啊 小云说她承受不了 我们大家还能坚持多久 ...
    言璟璟阅读 115评论 0 0
  • 当深夜里下班,深夜里吃饭,深夜里睡觉,闭上眼睛就是天亮。醒来后最惬意的莫过于可以赖会床,然后挣扎着爬起来,穿衣洗漱...
    深夜磨刀阅读 559评论 4 5