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