使用javascript检查日期范围中是否存在周末
想知道是否有人有办法检查两个日期之间是否存在周末及其范围使用javascript检查日期范围中是否存在周末,javascript,date,Javascript,Date,想知道是否有人有办法检查两个日期之间是否存在周末及其范围 var date1 = 'Apr 10, 2014'; var date2 = 'Apr 14, 2014'; funck isWeekend(date1,date2){ //do function return isWeekend; } 先谢谢你 编辑添加到目前为止我得到的内容。两天内检查 function isWeekend(date1,date2){ //do function if(date1.
var date1 = 'Apr 10, 2014';
var date2 = 'Apr 14, 2014';
funck isWeekend(date1,date2){
//do function
return isWeekend;
}
先谢谢你
编辑添加到目前为止我得到的内容。两天内检查
function isWeekend(date1,date2){
//do function
if(date1.getDay() == 6 || date1.getDay() == 0){
return isWeekend;
console.log("weekend")
}
if(date2.getDay() == 6 || date2.getDay() == 0){
return isWeekend;
console.log("weekend")
}
}
您只需检查第一个或第二个日期是否为周末 从第一个日期循环到第二个日期,仅当两个日期之间的某一天是周末时才返回true:
function isWeekend(date1,date2){
var date1 = new Date(date1), date2 = new Date(date2);
//Your second code snippet implies that you are passing date objects
//to the function, which differs from the first. If it's the second,
//just miss out creating new date objects.
while(date1 < date2){
var dayNo = date1.getDay();
date1.setDate(date1.getDate()+1)
if(!dayNo || dayNo == 6){
return true;
}
}
}
函数为周末(日期1、日期2){
var date1=新日期(date1),date2=新日期(date2);
//您的第二个代码段暗示您正在传递日期对象
//到函数,这与第一个不同。如果是第二个,
//只是错过了创建新的日期对象。
而(日期1<日期2){
var dayNo=date1.getDay();
date1.setDate(date1.getDate()+1)
如果(!dayNo | | dayNo==6){
返回true;
}
}
}
最简单的方法是迭代日期,如果其中任何一天是
6
(周六)或0
(周日),则返回
演示:
代码:
函数为周末(日期1、日期2){
变量d1=新日期(日期1),
d2=新日期(日期2),
isWeekend=false;
而(d1
如果要检查这两个日期之间是否存在整个周末,请稍微更改代码: 演示2: 代码:
函数isFullWeekend(日期1、日期2){
变量d1=新日期(日期1),
d2=新日期(日期2);
而(d1
在两个日期之间传递消息是没有意义的,尤其是当两个日期相隔4天时。这是一个只使用一天的方法,这对我来说更有意义:
var date1 = 'Apr 10, 2014';
function isWeekend(date1){
var aDate1 = new Date(date1);
var dayOfWeek = aDate1.getDay();
return ((dayOfWeek == 0) || (dayOfWeek == 6));
}
我想这就是@MattBurland所建议的没有循环的方法
function isWeekend(start,end){
start = new Date(start);
if (start.getDay() == 0 || start.getDay() == 6) return true;
end = new Date(end);
var day_diff = (end - start) / (1000 * 60 * 60 * 24);
var end_day = start.getDay() + day_diff;
if (end_day > 5) return true;
return false;
}
考虑到“星期日”是一周的第一天(0),没有循环: 检查一周的第一天,如果周末返回为真 范围第一天的“一周中的某一天”和圈中的天数之和。 如果sum>5,则返回true使用Date.getDay()判断是否是周末
if(tempDate.getDay()==6 || tempDate.getDay()==0)
检查此工作样本:
这将列出日期范围内的所有周末。
修改它以适应需求。
祝你好运。以下是我建议测试一个周末是否在两个日期的范围内(我想这就是你要问的):
函数包含端点(d1、d2)
{
//注意:我假设d2比d1晚,并且d1和d2实际上都是日期
//您可能需要添加代码来检查这些条件
变量间隔=(d2-d1)/(1000*60*60*24);//转换为天
如果(间隔>5){
return true;//必须包含周末
}
var day1=d1.getDay();
var day2=d2.getDay();
返回!(第1天>0和第2天<6和第2天>第1天);
}
如果您需要检查整个周末是否在该范围内,那么它只是稍微复杂一些。告诉我们您尝试了什么?计算开始日期和结束日期之间的天数,如果超过
5
,那么它必须包含一个周末。(不清楚你是想要一个完整的周末,还是仅仅一个周六或周日)。如果是,则有一个示例可供您检查如何循环2个日期,在该循环中,您可以检查start.getDay()
,值以确定是否有周末。@BatuZet:我认为您甚至不需要循环。如果你在开始和结束时都做了getDay()
,你应该能够解决它。是的@Matt Burland。你刚发了几秒钟我就发了。如果我早一点看到你的,我就不会发我的:你能解释一下这里到底发生了什么吗?isWeekend=(day==6)| |(day==0);抱歉,我只是想进一步理解一下逻辑:)如果一天是6
(即周六)或者如果一天是0
(即周日),那么我们知道这是周末。(在Javascript中,天数为0到6)我们将布尔变量isWeekend
设置为true,如果为true则返回。或者你可以直接返回true。啊!我不知道你可以直接在JS中的变量中这样做。太棒了!再次感谢你!如果date2是星期六,则函数将返回false。您应使用while(d1
function isWeekend(start,end){
start = new Date(start);
if (start.getDay() == 0 || start.getDay() == 6) return true;
end = new Date(end);
var day_diff = (end - start) / (1000 * 60 * 60 * 24);
var end_day = start.getDay() + day_diff;
if (end_day > 5) return true;
return false;
}
if(tempDate.getDay()==6 || tempDate.getDay()==0)
function containsWeekend(d1, d2)
{
// note: I'm assuming d2 is later than d1 and that both d1 and d2 are actually dates
// you might want to add code to check those conditions
var interval = (d2 - d1) / (1000 * 60 * 60 * 24); // convert to days
if (interval > 5) {
return true; // must contain a weekend day
}
var day1 = d1.getDay();
var day2 = d2.getDay();
return !(day1 > 0 && day2 < 6 && day2 > day1);
}