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

访客6年前javaScript2405

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

<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实现Json对象与json字符串的互转方式

1>jQuery插件支持的转换方式:$.parseJSON( jsonstr ); //jQuery.parseJSON(jsonstr),可以将json字符串转换成json对象2>浏览器...

idea 如何运行vue项目

idea 如何运行vue项目

这里以RuoYi-Vue项目为例,开源地址1.环境准备JDK >= 1.8 (推荐1.8版本) Mysql >= 5.7.0 ...

api.js去掉class样式

api.js去掉class样式

<div class="aui-list-item-inner aui-list-item-arrow" id="name"></div>...

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

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

富文本summernote.js屏蔽图片上传功能

summernote.js 默认是允许上传图片及视频的,但是有些业务并不需要上传图片,只需要一些文字的排版及处理。此时只要自定义toolbar即可。$('.summernote').s...

js动态加载复选框checkbox(XML串)

 首先,使用JS动态产生Checkbox可以采用如下类似的语句:代码如下:var checkBox=document.createElement("input");che...

发表评论    

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