Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/419.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用javascript检查日期范围中是否存在周末_Javascript_Date - Fatal编程技术网

使用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);
}