Javascript 如何在日期验证后计算新日期?

Javascript 如何在日期验证后计算新日期?,javascript,Javascript,我正在使用来自和验证后的数据验证代码,我希望使用输入的日期,并在X个月后返回一个新日期。例如,如果我输入了2019年9月6日,我希望代码返回正确的新日期,即6个月后的日期,即2019年6月12日 有人能帮我完成这个过程吗?我一直在尝试不同的方法来重用原始代码,以获得我想要的结果,但是我从7月2日起就开始这样做,并得出结论,我自己无法解决这个问题。我完全被难住了 最后,我提前表示最深切的歉意,我没有对Ebbing先生的代码的原始线程发表评论并寻求帮助,但不幸的是,我没有足够的信誉点这样做。如果您不

我正在使用来自和验证后的数据验证代码,我希望使用输入的日期,并在X个月后返回一个新日期。例如,如果我输入了2019年9月6日,我希望代码返回正确的新日期,即6个月后的日期,即2019年6月12日

有人能帮我完成这个过程吗?我一直在尝试不同的方法来重用原始代码,以获得我想要的结果,但是我从7月2日起就开始这样做,并得出结论,我自己无法解决这个问题。我完全被难住了


最后,我提前表示最深切的歉意,我没有对Ebbing先生的代码的原始线程发表评论并寻求帮助,但不幸的是,我没有足够的信誉点这样做。

如果您不确定使用某个库(矩.js)是否好。如果你想找到一些已经被发现的东西,准备好撞你的头

 // Elian Ebbing validator

function isValidDate(dateString) {
        // First check for the pattern
        if(!/^\d{1,2}\/\d{1,2}\/\d{4}$/.test(dateString))
        return false;

        // Parse the date parts to integers
        var parts = dateString.split("/");
        var day = parseInt(parts[1], 10);
        var month = parseInt(parts[0], 10);
        var year = parseInt(parts[2], 10);

        // Check the ranges of month and year
        if(year < 1000 || year > 3000 || month == 0 || month > 12)
        return false;

        var monthLength = [ 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 ];

        // Adjust for leap years
        if(year % 400 == 0 || (year % 100 != 0 && year % 4 == 0))
        monthLength[1] = 29;

        // Check the range of the day
        return day > 0 && day <= monthLength[month - 1];
}

// if you want to change date format

function formatDate(date) {
    var d = new Date(date),
        month = '' + (d.getMonth() + 1), // monts start form 0 so for result 06/01/2019
        day = '' + d.getDate(),
        year = d.getFullYear();
    if (month.length < 2) {
        month = '0' + month;
    }      
    if (day.length < 2) {
         day = '0' + day;
    }
    return [month, day, year].join('/');
}

// increment Date with count of months

function incrementDate(date, counter = 0) {
    if (isValidDate(start_date_value)) { 
        var newDate  = new Date(date);
        newDate.setMonth(newDate.getMonth() + counter);
        console.log(formatDate(newDate));
    }
}

var start_date_value = "01/01/2019";
incrementDate(start_date_value, 5) ;  // 06/01/2019
//Elian Ebbing验证器
函数isValidDate(日期字符串){
//首先检查模式
if(!/^\d{1,2}\/\d{1,2}\/\d{4}$/.test(日期字符串))
返回false;
//将日期部分解析为整数
var parts=dateString.split(“/”);
var day=parseInt(第[1]部分,第10节);
变量月=parseInt(部分[0],10);
var year=parseInt(第[2]部分,第10节);
//检查月份和年份的范围
如果(年<1000 |年>3000 |月==0 |月>12)
返回false;
var monthLength=[31,28,31,30,31,30,31,31,30,31,31];
//调整闰年
如果(年份%400==0 | |(年份%100!=0和年份%4==0))
月长[1]=29;
//检查一天的活动范围

return day>0&&day Use moment.js library;)您使用哪种日期系统,其中“06/09/2019+6个月=12/6/2019”?是的,使用momentjs:似乎您已经找到了验证件的解决方案,并且正在寻找如何将月份添加到日期中。如果这是正确的,那么请查看或感谢momentjs的建议。在搜索过程中,我确实遇到了许多线程作为可能的解决方案。但是,因为我也想学习如何编写代码,我选择了不走这条路线。最后,我应该补充一点,我正在谷歌应用程序脚本中使用此验证代码,以自动处理我经常使用的文档。无论如何,再次感谢大家的来电,我将查看与我共享的链接。谢谢Ivan!哇,我在搜索过程中是否完全错过了这些功能?我很快会给他们一个测试,看看它是否能解决我的问题。谢谢!如果我能帮助@Rodney,我会很高兴,但不要忽视使用经过验证的东西(如库)的技巧.今天我终于抽出时间完成了我的项目,所以我想确保我回到这个主题,并向所有参与的人表示感谢。在你们的帮助下,我能够得到我想要的确切结果。我知道我本可以利用一个库轻松解决我的问题,但我真诚地希望能够更好地撰写一篇文章了解Javascript的来龙去脉。话虽如此,我觉得走这条漫长而艰难的道路确实有助于像我这样的初学者对该语言有更多的了解。为此,我非常感谢。再次感谢大家!