计算结束日期从月和开始日期JQuery

Calculate end date from month and start date JQuery

本文关键字:日期 开始 JQuery 结束 计算      更新时间:2023-09-26

我有一个函数,我从开始日期和月份(任期)计算结束日期。例如,我有开始日期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
        }
    }
}

请告诉我哪里错了

当您添加日期时,最简单的方法是对毫秒进行求和,就像我之前制作的示例一样,或者像这样操作date对象:

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)