我希望根据用户选择的范围获得以前的月份范围。例如,如果用户选择: 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月。
希望我的问题很明确。任何建议都会非常有用!
答案 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
}