如何在JavaScript的两年内获得一系列的月份

时间:2015-10-14 00:28:45

标签: javascript jquery

我希望根据用户选择的范围获得以前的月份范围。例如,如果用户选择: 2015年7月至2015年9月。我可以使用下面的对象获得数字月份值。

var months = {January: 1, February: 2, March: 3, April: 4, May: 5, June: 6, July: 7, August: 8, September: 9, October: 10, November: 11, December: 12};

然后我可以使用这个逻辑来计算出前一个范围 - http://jsfiddle.net/0cq5nprt/

var currStartMonth = 7,
  currEndMonth = 9,
  monthRange = (currEndMonth - currStartMonth) + 1,
  prevStartMonth = currStartMonth - monthRange,
  prevEndMonth = (prevStartMonth + monthRange) - 1;

我遇到的问题是当范围超过两年时,它就像: 2014年12月到2015年1月。这应该是2014年10月至2014年11月。

希望我的问题很明确。任何建议都会非常有用!

1 个答案:

答案 0 :(得分:0)

我想你应该在计算中使用年份。如下所示。

var yearDiff = endYear - currentYear
if yearDiff = 0 {
   monthRange = (currEndMonth - currStartMonth) + 1,
   prevStartMonth = currStartMonth - monthRange,
   prevEndMonth = (prevStartMonth + monthRange) - 1;
} else {
   calcEndMonth = calcEndMonth + 12
   monthRange = (calcEndMonth - currStartMonth) + 1,
   prevStartMonth = curgstartmonth - monthRange,
   prevEndMonth = (prevStartMonth + monthRange) - 1;
   if prevEndMonth > 12 {
      prevEndYear = curEndYear - 1
      prevEndMonth = prevEndMonth - 12
   }
}

考虑您的例子2014年12月至2015年1月

var yearDiff = endYear - currentYear
// yearDiff = 2015 - 2014 = 1

{
   calcEndMonth = calcEndMonth + 12
   //calcEndMonth = 1 + 12 = 13

   monthRange = (calcEndMonth - currStartMonth) + 1,
   //monthRange = (13 - 12) + 1 = 2

   prevStartMonth = curStartmonth - monthRange,
   //prevStartMonth = 12 (December) - 2 = 10(October)

   prevEndMonth = (prevStartMonth + monthRange) - 1;
   //prevEndMonth = (10 + 2) - 1 = 11(November)

   if prevEndMonth > 12 {
      prevEndYear = curEndYear - 1
      prevEndMonth = prevEndMonth - 12

   }
相关问题