2016-08-02 59 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)) ;