有人可以帮助我理解为什么我会从这个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
}
答案 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。