查找上一个和下一个日期

时间:2013-12-17 16:51:26

标签: javascript

有人可以帮助我理解为什么我会从这个JavaScript函数中获得输出吗?

mod.getAdjacentDates = function (year, month, date) {
    var prevDate = new Date(year, month, date);
    var nextDate = new Date(year, month, date);

    prevDate.setDate(date - 1);
    nextDate.setDate(date + 1);

    var data = {
        prevDate: prevDate.getDate(),
        prevMonth: prevDate.getMonth() + 1,
        prevYear: prevDate.getFullYear(),
        nextDate: nextDate.getDate(),
        nextMonth: nextDate.getMonth() + 1,
        nextYear: nextDate.getFullYear()
    };

    alert(year + '-' + month + '-' + date + ' ' + JSON.stringify(data));

    return data;
};

我从警报中获得的输出是:

2013-12-17
{
   "prevDate":16,
   "prevMonth":1,
   "prevYear":2014,
   "nextDate":20,
   "nextMonth":6,
   "nextYear":2014
 }

我希望得到以下输出:

2013-12-17
{
  "prevDate":16,
  "prevMonth":12,
  "prevYear":2013,
  "nextDate":18,
  "nextMonth":12,
  "nextYear":2013
}

2 个答案:

答案 0 :(得分:2)

当我尝试你的代码时,我得到了:

{
  "prevDate":16,
  "prevMonth":1,
  "prevYear":2014,
  "nextDate":18,
  "nextMonth":1,
  "nextYear":2014
}

您还需要在创建日期的月份中减去一个:

var prevDate = new Date(year, month - 1, date);
var nextDate = new Date(year, month - 1, date);

如果您创建月份值为12的日期,则该日期会溢出到该年份,以便它成为明年1月的日期。

答案 1 :(得分:1)

#.getMonth()基于零,而其余基于1。