在日期中添加天数时,如何检查它是星期六还是星期日
when adding a number of days to a date, how to check if it is saturday or sunday
我使用以下代码将 X 天添加到今天的日期。 在添加天数时,如果遇到星期六或星期日,我需要跳过它。 例如,如果今天是 7/7/2016(星期四),而我正在添加 5 天,通常它是 7/12/2016(星期二),在这种情况下,我需要跳过星期六和星期日,所以添加 5 天将是 7/14/2016(星期四)。 这是添加 X 天数的代码,X 是 NumDays。 我想我需要在行周围添加一个 FOR 循环:NewDate.setDate(NewDate.getDate() + parseFloat(NumDays));并检查它是否落在周六或周日,如果是,请跳过它,但很难弄清楚。 有人做过这样的事情吗?
var date = new Date(today);
var NewDate = new Date(date);
var NumDays = globals().XML.selectSingleNode("//_GetRSNumberOfDays/NumberOfDays").text;
NewDate.setDate(NewDate.getDate() + parseFloat(NumDays));
switch(NewDate.getDay())
{
case 6:
NewDate.setDate(NewDate.getDate() + 2);
break;
case 0:
NewDate.setDate(NewDate.getDate() + 1);
break;
}
var dd = NewDate.getDate();
var mm = NewDate.getMonth() + 1;
var y = NewDate.getFullYear();
var someFormattedDate = y + "/" + mm + "/" + dd
@Bathsheba的答案更有效,但如果您希望添加少量天数,而不是跨大型日期集,这可能更容易理解和维护:
function addDays(date, howMany) {
var date = new Date(date); // copy off
var skip = [0, 6]
while (howMany-- > 0) {
date.setDate(date.getDate() + 1); // add a day
while (skip.indexOf(date.getDay()) > -1) { // if we're on a skip day, keep on adding
date.setDate(date.getDate() + 1);
}
}
return date
}
这出现了很多,如果你巧妙地处理它(即不使用循环),你可以以恒定的复杂性得到解决方案:
基本上,您可以在日期序列号上使用 % 7 来标识星期几。
然后分三步进行,总天数 X
-
添加必要的天数,直到周末开始(请记住使用% 7检查)。从 X 中减去它。 如有必要,终止。
加上 7 * (X/5 ) 天,从 X 中减去 5 * (X/5)。 请注意,我在这里依靠整数除法。
添加 X 的剩余值(如果有)。
相关文章:
- 为什么不't Javascript对我的输入值进行了一些重新检查
- 在单击任何位置时隐藏元素,而不检查每次DOM单击
- 如何检查管道中未定义的项目
- 主干-不管怎样,检查事件以前是否绑定过
- 使用javascript检查多个输入值,并在1次检查中标记多个输入框
- 递归使用 eval() 是检查程序执行的好方法吗?
- 检查onsubmit doenst work jquery contactform上的函数
- JavaScript 检查隐藏字段中的值并将其设置为隐藏字段值
- API密钥使用和检查示例
- 如何让程序检查所选单词中是否有按键
- JS:检查URL中的参数,然后迭代一个参数为var的函数
- 用于检查数组中是否存在元素的javascript自定义方法
- 如何检查字符串的一部分与数组匹配
- Jquery如何检查今天的时间大于使用给定时间
- 使用javascript反复检查用户在facebook上的登录状态
- 使用 jQuery 检查所有值是否为空或已填充
- 使用Javascript使用数组检查文本框中的值
- JavaScript代码未正确检查ajax请求
- 如何检查用户在html5视频播放器中观看了完整的视频
- 在日期中添加天数时,如何检查它是星期六还是星期日