2016-02-05 133 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

這解決了我的問題。非常感謝你的幫助! –