Javascript 用未来日期格式化日期

Javascript 用未来日期格式化日期,javascript,Javascript,我在用javascript格式化日期和提前添加额外日期时遇到问题 代码运行良好,但格式不好,请检查我的代码,并告诉我代码中的额外天数应该放在哪里 <p id="advancedate"></p> <script> function addWorkDays(startDate, days) { if(isNaN(days)) { return } if(!(startDate instanceof Date)) {

我在用javascript格式化日期和提前添加额外日期时遇到问题

代码运行良好,但格式不好,请检查我的代码,并告诉我代码中的额外天数应该放在哪里

<p id="advancedate"></p>
<script>

function addWorkDays(startDate, days) {
    if(isNaN(days)) {
        return
    }
    if(!(startDate instanceof Date)) {  
        return
    }


    var dow = startDate.getDay();
    var daysToAdd = parseInt(days);


    if (dow == 0)
        daysToAdd++;

    if (dow + daysToAdd >= 6) {

        var remainingWorkDays = daysToAdd - (5 - dow);

        daysToAdd += 2;
        if (remainingWorkDays > 5) {

            daysToAdd += 2 * Math.floor(remainingWorkDays / 5);

            if (remainingWorkDays % 5 == 0)
                daysToAdd -= 4;
        }
    }
    startDate.setDate(startDate.getDate() + daysToAdd);
    return startDate;
}



var today = new Date(),
    month = today.getMonth(),
    date = today.getDate(),
    day = today.getDay();
var months = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]; 
var weeks = ["Sunday","Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"];

document.getElementById("advancedate").innerHTML = addWorkDays = (weeks[day] + "," + months[month] + " " + date ); //Saturday,May 11
//document.getElementById("advancedate").innerHTML = addWorkDays(today, 14); //Wed May 15 2019 09:51:41 GMT+0800
  </script>

功能添加工作日(开始日期,天){ 如果(isNaN(天)){ 回来 } 如果(!(startDate instanceof Date)){ 回来 } var dow=startDate.getDay(); var daysToAdd=parseInt(天); 如果(道琼斯指数=0) daysToAdd++; 如果(道指+日累计>=6){ var剩余工作日=daysToAdd-(5-道指); daysToAdd+=2; 如果(剩余工作日>5){ daysToAdd+=2*数学楼层(剩余工作日/5); 如果(剩余工作日%5==0) daysToAdd-=4; } } startDate.setDate(startDate.getDate()+daysToAdd); 返回起始日期; } var today=新日期(), 月份=今天。getMonth(), 日期=今天。getDate(), day=今天。getDay(); 风险值月份=[“一月”、“二月”、“三月”、“四月”、“五月”、“六月”、“七月”、“八月”、“九月”、“十月”、“十一月”、“十二月”]; var weeks=[“星期日”、“星期一”、“星期二”、“星期三”、“星期四”、“星期五”、“星期六”]; document.getElementById(“AdvancedDate”).innerHTML=addWorkDays=(周[日]+,“+月[月]+”+日)//五月十一日(星期六) //document.getElementById(“advancedate”).innerHTML=addWorkDays(今天,14)//2019年5月15日星期三09:51:41 GMT+0800
首先,如果您不希望
addWorkDays
更改传入日期,我建议添加以下内容

function addWorkDays(startDate, days) {
    if(isNaN(days)) {
        return
    }
    if(!(startDate instanceof Date)) {  
        return
    }
    // avoid changing the passed in Date object
    startDate = new Date(startDate);

    var dow = startDate.getDay();
    var daysToAdd = parseInt(days);
    /// ... rest of your code
}
不过,这不是必需的,取决于使用情况

现在要正确使用它(不管上面有什么变化)


使用momentjs,你只需一行就可以做到

例如,您可以像这样添加天数

moment().add(7, 'days').format('LLL')

.innerHTML=addWorkDays=
。。。addWorkDays是一个函数,您需要调用它-就像您在下面的注释代码中所做的那样,但是如果像此文档一样,则需要对返回的值getMonth、getDate等进行调用。getElementById(“AdvancedDate”).innerHTML=addWorkDays(周[日]+,“+月[月]+”+日期,14);我得到undefinedno,因为您的函数需要一个D,并返回一个日期-因此,innerHTML将被设置为
undefined
,因为如果(!(startDate instanceof Date)),它将在
失败

moment().add(7, 'days').format('LLL')