在函数返回日期之后,我使用函数将日期增加1个月的日期不正确

时间:2017-02-19 15:03:13

标签: javascript html

我已经自动执行了以html格式填写发票日期栏中今天日期的功能,然后自动填写截止日期前一个月的发票日期,今天的日期工作正常但是截止日期正确显示日期提前1个月至假日期后的第10个月。第11个月显示明年第1个月,第12个月显示同年第13个月。 使用javascript的HTML表单代码:

<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>

1 个答案:

答案 0 :(得分:0)

JavaScript Date API已经知道如何按月,天或年的增量调整日期。如果将日期实例的一部分设置为&#34;溢出&#34;价值,你得到一个有意义的日期。因此,要在另一个日期之后显示一个月的日期,只需在月份值中添加一个 - 无需自己进行任何其他调整:

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);
}