得到不正确的日期,我使用的功能增加日期1个月,功能返回日期后

问题描述:

我已经做了一个函数,填写发票日期栏中的今天的日期自动填写html表单,然后填写发票日期前1个月到期日期栏自动生效,今天的日期正常,但截止日期正确显示日期提前1个月,直到提供虚假日期后的第10个月。第11个月显示明年第1个月,第12个月显示同年第13个月。 HTML表单代码使用javascript:得到不正确的日期,我使用的功能增加日期1个月,功能返回日期后

<div style="width:15%;float:left"> 
Invoice Date 
<br> 
<input style="width:98%;margin-left:1%;margin:right:1%" type="date" id="myDate" placeholder="Today's Date"> 

<script type="text/javascript"> 
function SetDate() { 
    var date = new Date(); 

    var day = date.getDate(); 
    var month = date.getMonth() + 1; 
    var year = date.getFullYear(); 

    if (month < 10) month = "0" + month; 
    if (day < 10) day = "0" + day; 

    var today = day + "-" + month + "-" + year; 


    document.getElementById('myDate').value = today; 



    if (month < 13) { 
     month = parseInt(month) + 1; 
    } 
    if (month == 12) { 
     month = 13 - month; 
     year = year + 1 
    } 
    if (month < 10) { 
     month = "0" + month; 
    } 
    if (day < 10) day = "0" + day; 

    var due = day + "-" + month + "-" + year; 

    document.getElementById('duedate').value = due; 
} 
</script> 
</div> 

<div style="width:15%;float:left"> 
Due Date 
<br> 
<input style="width:98%;margin-left:1%;margin:right:1%" type="date" id="duedate" placeholder="Due date"> 

</div> 
+0

你不必这样做,在所有的工作。如果您将JavaScript日期实例的月份设置为12,则它已经理解您的意思是明年的一月份,并且会为您调整所有内容。 – Pointy

javascript日期的API已经知道如何通过几个月的增量或数天,或数年调整日期。如果将日期实例的一部分设置为“溢出”值,则会得到一个合理的日期。因此,一个月显示日期另一个日期之后,只需添加一个到一个月值—不需要自己做任何其他调整:

function SetDate() { 
    var date = new Date(); 

    function fmtDate(date) { 
     var day = date.getDate(); 
     var month = date.getMonth() + 1; 
     var year = date.getFullYear(); 

     if (month < 10) month = "0" + month; 
     if (day < 10) day = "0" + day; 

     return day + "-" + month + "-" + year; 
    } 

    document.getElementById('myDate').value = fmtDate(date); 

    date.setMonth(date.getMonth() + 1); 
    document.getElementById('duedate').value = fmtDate(date); 
}