2017-02-19 9 views
-1

今日の日付をhtmlフォームの請求書日付列に自動的に記入し、請求書日付から1ヶ月先に記入する機能を作成しました今日の日付は正常に動作していますが、期日は誤った日付を指定してから10ヶ月後の日付を正確に表示します。第11月には来年の第1月、第12月には同じ年の第13月が表示されます。 JavaScriptを使用して HTMLフォームコード:関数の返却日の後に日付を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に設定すると、翌年の1月を意味することが既に理解されており、すべてが調整されます。 – Pointy

答えて

0

JavaScriptのDate APIは、すでに数ヶ月単位、または日、または年によって日付を調整する方法を知っています。日付インスタンスの一部を「オーバーフロー」値に設定すると、意味をなさない日付が得られます。このように、単に必要は任意の他の調整を自分でしないように—月の値に1を追加し、別の日の後の月の日付を表示します

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); 
} 
関連する問題