我正在处理报告的过滤器页面。在该页面上,我有无线电输入,用户可以选择自动填充过滤器的快速报告选项。有一个领域让我难过。我能够成功地按日期和月份成功地抵消日期字段,但是当我尝试抵消当天时,它将执行以下操作:
看到今天是2/5/16,我试图抵消7天,它将计算到2/29/16。它计算正确的天数,但未能回到1月和2016年1月29日。这是我的javascript:
function dateDayOffset(theDay) {
var now = new Date();
var m=now.getMonth()+1;
now.setDate(now.getDate() + theDay );
var d=now.getDate();
var y=now.getFullYear();
var dayOffset = m + "/" + d + "/" + y;
return((zeroPadDate(dayOffset)));
};
这是我在我的过滤器页面中使用jQuery的地方:
$("#ToDate").val(dateDayOffset(-7));
答案 0 :(得分:2)
老实说,当谈到日期时,你最好使用moment.js来处理这样的事情。如果您手动执行此操作,其他问题(如28/29/30/31天)将会对您产生影响。
您可以使用moment().subtract(7, 'days')
来完成您想要的任务。
但是对于您的代码,似乎您遇到的问题是您在更改日期之前获得月份。在更改日期的行之后移动该代码,它应该可以正常工作。
function dateDayOffset(theDay) {
var now = new Date();
now.setDate(now.getDate() + theDay );
var m=now.getMonth()+1;
var d=now.getDate();
var y=now.getFullYear();
var dayOffset = m + "/" + d + "/" + y;
return((zeroPadDate(dayOffset)));
};