我在特定日期添加了几天:
myDate.setDate(myDate.getDate()+plusdays
plusdays是我的变量,一切正常。
现在我想以允许跳过给定时间段(最终由用户指定)的方式计算结果(例如从4月1日到4月15日),这不一定是假期。 / p>
我已经回顾了类似的问题,但要么我不理解它们,要么我认为它们并没有真正解决我的问题。
有什么想法吗?
编辑:我的主要问题是,只有在与计算相关时才应跳过日期。换句话说,我需要一个解决方案,如果我在30日到3月28日之间增加30天而不计算在1月至4月15日之间,但如果我在3月28日加入1天,那么结果就是3月29日。 / p>
答案 0 :(得分:0)
在当前代码的逻辑中,它应该类似于
myDate.setDate(myDate.getDate() + plusdays + skipdays)
计算skipdays
使用
var singleDay = 1000 * 60 * 60 * 24,
fromdate = new Date('1 Apr 2012'),
todate = new Date('15 Apr 2012'),
skipdays = (todate - fromdate) / singleDay ;
<强>更新强>
发表评论后,您可以使用
function interSectionInDays(include, exclude){
if (!(include.from > exclude.to) && !(include.to < exclude.from)){
var from = Math.max(include.from, exclude.from),
to = Math.min(include.to, exclude.to),
singleDay = 1000 * 60 * 60 * 24;
return (to-from)/singleDay;
}
return 0;
}
此方法将计算日期范围之间的相交天数。
用作
interSectionInDays( {from: <startdate>, to:<enddate>}, {from:<excludestartdate>, to:<excludeenddate>} );
所以在你的例子中
var fromdate = new Date(myDate),
todate = new Date(fromdate).setDate( fromdate.getDate() + plusdays),
excludestart = new Date('1 Jan 2012'),
excludeend = new Date('5 Apr 2012'),
skipdays = interSectionInDays( {from:fromdate, to:todate}, {from:excludestart, to:excludeend});
myDate.setDate( myDate.getDate() + plusdays + skipdays );
答案 1 :(得分:0)
let curDate = new Date()
let delayDate = new Date(curDate.setDate(curDate.getDate() + 90))
这样就好了