2016-02-05 183 views
0

我正在为报表筛选一个页面。在该页面上,我有无线电输入,用户可以选择自动填充过滤器的快速报告选项。有一个领域让我难堪。我能够成功地将日期字段在年份和月份之间抵消,但当我尝试抵消该日期时,它将执行以下操作:Javascript日期偏移量

看到今天是2016年5月2/5,并且我试图抵消7天,它会计算到2/29/16。它计算正确的天数,但不能返回到1月和现在1/29/16。下面是我的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)); 
+1

做修改...然后获取值。您从当前日期获得月份值 – charlietfl

回答

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))); 
}; 
+0

我在修改它之前看到了您的答案,这是一个很好的结果。 – CoveGeek

+0

这解决了我的问题。非常感谢你的帮助! –