我正在尝试构建一个javascript函数,该函数将自动填充日历的14天,日期最后一个日期由datepicker选择。到目前为止,我的代码是:
function filldates() {
datepicked = document.getElementById("period-ending").value;
s = datepicked.split('/');
enddate = new Date(s[2], s[0], s[1]);
date1 = enddate.setDate(enddate.getDate()-14);
day1 = date1.getMonth() + 1;
month1 = date1.getDate();
var firstday = day1 + '/' + month1;
document.getElementById("date-1").value = firstday;
}
然而,开发人员的控制台一直告诉我date1.getMonth不是一个函数。我很困惑,因为我一直在研究的所有教程和示例都基于以下内容:“var today = new Date(); var month = today.getMonth()+ 1;”
这是一个实施问题吗?
答案 0 :(得分:11)
setDate()
函数会改变其上下文日期。它不会返回新的Date实例。
如果您想要创建一个比另一个更早几天的新日期实例:
function daysAfter(d, days) {
var nd = new Date(d.getTime());
nd.setDate(d.getDate() + days);
return nd;
}
然后,如果你有一个约会,你可以在14天之后创建一个日期:
var someDate = ... whatever ... ;
var fourteenDaysAfter = daysAfter(someDate, 14);
然后,您可以使用.getMonth()
和.getDate()
访问者执行您想要的任何格式设置。请记住,JavaScript中的月份从零开始编号。
编辑日期之前日期只传递一个负数。