2016-08-02 49 views
-3

我試圖通過選擇月份數來計算日期以顯示結果日期爲-1天。錯誤的計算日期「-1天」

$('#txtjQcal15_1, #month_number').change(function(){ 
var months = +$('#month_number').val();  
var endmDate = new Date($('#txtjQcal15_1').val()); 
if (isNaN(endmDate)) {endmDate = 0;} 
    else { 
endmDate.setMonth(endmDate.getMonth() + Number(months)); 
$('#date_result_month').val(endmDate.getFullYear() + '-' + ("0" + (endmDate.getMonth() + 1)).slice(-2) + '-' + ("0" + (endmDate.getDate() - 1)).slice(-2)) ; 

如果我選擇2016-09-09結果顯示2016-10-08和它沒關係。

只計算當月的乞討是錯誤的,例如,如果我選擇2016-09-01結果顯示:2016-10-00 !!!而不是2016-09-30

+0

對Date()對象進行計算,然後從結果中生成格式化的字符串。 –

+0

[Add to Date to Date]的可能重複(http://stackoverflow.com/questions/563406/add-days-to-javascript-date) –

+0

@RoryMcCrossan如果我將它改爲(endmDate.getDate() - 1 ))然後再次顯示結果:2016-10-0 – allogos

回答

0

添加endmDate.setDate(endmDate.getDate() - 1);解決了我的問題。

$('#txtjQcal15_1, #month_number').change(function(){ 
var months = +$('#month_number').val();  
var endmDate = new Date($('#txtjQcal15_1').val()); 
if (isNaN(endmDate)) {endmDate = 0;} 
else { 
endmDate.setMonth(endmDate.getMonth() + Number(months)); 
endmDate.setDate(endmDate.getDate() - 1); 
$('#date_result_month').val(endmDate.getFullYear() + '-' + ("0" + (endmDate.getMonth() + 1)).slice(-2) + '-' + ("0" + endmDate.getDate()).slice(-2)) ;