js遍历时间段内有几天是周六、有几天是周末

访客6年前javaScript3071

给出时间段算出本时间段内有几天是周天、有几天是周末

<html>
<head>
   <meta http-equiv="Content-Type" content="text/html; charset=GBK" />
   <title>Untitled Document</title>
   <script>
// 求两个时间的天数差 日期格式为 YYYY-MM-dd
    function daysBetween(DateOne,DateTwo)
    {  
       var OneMonth = DateOne.substring(5,DateOne.lastIndexOf ('-'));
       var OneDay = DateOne.substring(DateOne.length,DateOne.lastIndexOf ('-')+1);
       var OneYear = DateOne.substring(0,DateOne.indexOf ('-'));
    
       var TwoMonth = DateTwo.substring(5,DateTwo.lastIndexOf ('-'));
       var TwoDay = DateTwo.substring(DateTwo.length,DateTwo.lastIndexOf ('-')+1);
       var TwoYear = DateTwo.substring(0,DateTwo.indexOf ('-'));
    
       var cha=((Date.parse(OneMonth+'/'+OneDay+'/'+OneYear)- Date.parse(TwoMonth+'/'+TwoDay+'/'+TwoYear))/86400000);  
       return Math.abs(cha);
    }
  
////日期计算(加几天)。本方法相当于重载(第一个参数是‘n、s、h、d、q……’,第二个参数是要加的长度)
    Date.prototype.DateAdd = function(strInterval, Number) {  
       var dtTmp = this;
       switch (strInterval) {  
           case 's' :return new Date(Date.parse(dtTmp) + (1000 * Number));
           case 'n' :return new Date(Date.parse(dtTmp) + (60000 * Number));
           case 'h' :return new Date(Date.parse(dtTmp) + (3600000 * Number));
           case 'd' :return new Date(Date.parse(dtTmp) + (86400000 * Number));
           case 'w' :return new Date(Date.parse(dtTmp) + ((86400000 * 7) * Number));
           case 'q' :return new Date(dtTmp.getFullYear(), (dtTmp.getMonth()) + Number*3, dtTmp.getDate(), dtTmp.getHours(), dtTmp.getMinutes(), dtTmp.getSeconds());
           case 'm' :return new Date(dtTmp.getFullYear(), (dtTmp.getMonth()) + Number, dtTmp.getDate(), dtTmp.getHours(), dtTmp.getMinutes(), dtTmp.getSeconds());
           case 'y' :return new Date((dtTmp.getFullYear() + Number), dtTmp.getMonth(), dtTmp.getDate(), dtTmp.getHours(), dtTmp.getMinutes(), dtTmp.getSeconds());
       }
    }
  
////////////////////////格式化日期 
    Date.prototype.Format = function(formatStr)  
    {  
       var str = formatStr;  
       var Week = ['日','一','二','三','四','五','六'];
    
       str=str.replace(/yyyy|YYYY/,this.getFullYear());  
       str=str.replace(/yy|YY/,(this.getYear() % 100)>9?(this.getYear() % 100).toString():'0' + (this.getYear() % 100));  
    
       str=str.replace(/MM/,this.getMonth()>9?this.getMonth().toString():'0' + this.getMonth());  
       str=str.replace(/M/g,this.getMonth());  
    
       str=str.replace(/w|W/g,Week[this.getDay()]);  
    
       str=str.replace(/dd|DD/,this.getDate()>9?this.getDate().toString():'0' + this.getDate());  
       str=str.replace(/d|D/g,this.getDate());  
    
       str=str.replace(/hh|HH/,this.getHours()>9?this.getHours().toString():'0' + this.getHours());  
       str=str.replace(/h|H/g,this.getHours());  
       str=str.replace(/mm/,this.getMinutes()>9?this.getMinutes().toString():'0' + this.getMinutes());  
       str=str.replace(/m/g,this.getMinutes());  
    
       str=str.replace(/ss|SS/,this.getSeconds()>9?this.getSeconds().toString():'0' + this.getSeconds());  
       str=str.replace(/s|S/g,this.getSeconds());  
    
       return str;  
    } 
 
//String类型转换成Date类型
    function StringToDate(DateStr)
    {  
    
     var converted = Date.parse(DateStr);
     var myDate = new Date(converted);
     if (isNaN(myDate))
     {  
      //var delimCahar = DateStr.indexOf('/')!=-1?'/':'-';
      var arys= DateStr.split('-');
      myDate = new Date(arys[0],--arys[1],arys[2]);
     }
     return myDate;
    }
//由时间段('2009-03-10','2009-03-16')得到周六和周天的天数(----------------主函数---------------)
    function test(startDate,endDate){
       var myDate=StringToDate(startDate);//转换StringToDate
     var num=daysBetween(startDate,endDate);//计算有几天(时间段的长度)
     var Saturday=0;
     var Sunday=0;
     for(var i=0;i<num;i++){
      var weekNum=(myDate.DateAdd('d',i)).Format('w');//遍历时间段判断每一天是周几
      if(weekNum=='六')Saturday+=1;
      if(weekNum=='日') Sunday+=1;
     }
     alert("周六有:"+Saturday);
     alert("周天有:"+Sunday);
    }
   </script>
</head>
<body>
   <input type="button" value=Test onclick="test('2018-09-01','2018-09-30')"><br>
</body>
</html>


标签: js

相关文章

js实现字符串 传参数 作为变量名 并为其赋值(动态变量名)

直接附代码,自己测试<html> <script> //例如:为变量x赋值1 xvalue('x','1');//变量名为:x,值为:1....

js限制input只能输入数字、英文、汉字

 1.只能输入数字和英文的:  <input onkeyup="value=value.replace(/[\W]/g,'') "...

js控制文本域textarea 剩余可填字符显示

Html部分:<span class="remo"><div>还可以输入<span style="font-family: Georgia;...

js/Jquery判断变量是否含有汉字

  js判断变量是否含有汉字 ,直接附上代码:   var aa= '你好';    var...

js实现根据身份证号计算出年龄

测试打开海螺姑娘app 测试打开微信 测试打开QQ 有时候年龄为空,但有身份证号的时候,可通过身份证号计算出该人员的你年龄...

js解析json对象获取属性名及值(key value值)

不知道json串属性名字的时候,需要获取属性名。直接附代码://基本json串 var jsonObj = {"55":"1",...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。