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

访客7年前 (2018-09-25)javaScript3117

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

<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/jquery 日历控件及实例下载

js/jquery 日历控件及实例下载

实现日历控件效果:页面:<link href="${base}/resource/${profile.path}/css/lhgcalendar.css" rel="...

jquery 操作html元素(及CSS)

jquery 操作html元素(及CSS)

 $("li").addClass("aui-user-view-cell aui-img") ;  //给元素添加样式$('#a1...

表单用submit提交前增加校验

有时由于各种原因 input 必须用submit类型提交,在表单提交前增加校验。直接附代码 <HTML>      <he...

Js实现投票实例代码

Js实现投票实例代码

1.效果图源码:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transition...

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

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

bootstrap-suggest.min.js搜索下拉建议插件实例

bootstrap-suggest.min.js搜索下拉建议插件实例

效果图:官网demo1.引入外部js、css:<link id="bscss" href="${root}/bootstrap/css/bootstrap.css&...

发表评论

访客

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