有人可以帮助我理解为什么我会从这个 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
}
最佳答案
当我尝试你的代码时,我得到:
{
"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 月的日期。
关于javascript - 查找上一个和下一个日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20640038/