从月份开始计算结束日期并开始日期JQuery

时间:2014-05-28 14:19:35

标签: javascript jquery date

我有一个函数,我从开始日期和月份(任期)计算结束日期。 防爆。我的开始日期2014-05-05并在其中添加1个月后会显示2014-06-05。这对我来说是正确的。 但是,如果我要添加2014-02-01,则显示2014-03-01这是错误的。它应显示2014-02-28

以下是我的功能:

function getEndDate() {
    var start_date = $("#start_date").val();
    var tenure = $("#tenure").val();

    if (/^\d{4}\-\d{2}\-\d{2}$/i.test(start_date)) {

        var parts = start_date.split("-");
        var year = parts[0] && parseInt(parts[0], 10);
        var month = parts[1] && parseInt(parts[1], 10);
        var day = parts[2] && parseInt(parts[2], 10);
        var duration = parseInt(tenure, 10);

        if (day <= 31 && day >= 1 && month <= 12 && month >= 1) {
            var expiryDate = new Date(year, month+duration, day);
            expiryDate.setFullYear(expiryDate.getFullYear());

            day = ('0' + expiryDate.getDate()).slice(-2);
            month = ('0' + (expiryDate.getMonth())).slice(-2);
            year = expiryDate.getFullYear();

            $("#end_date").val(year + "-" + month + "-" + day);

        } else {
            // display error message
        }
    }
}

请让我知道我哪里出错。

1 个答案:

答案 0 :(得分:0)

当您添加日期时,最简单的方法是总和毫秒,就像我上一个例子中所做的那样,或者像这样操纵日期对象:

date = new Date(); //current date
future_date = new Date(date.getYear(), date.getMonth() + 1, date.getDay(), date.getHours(), date.getMinutes(), date.getSeconds());


//date -> Wed May 28 2014 21:43:52 GMT+0200 (CEST)    
//future_date -> Sun Jun 03 114 21:43:52 GMT+0200 (CEST)