用js计算从开始到结束时间之内的按周值选定

 

前台选择周几(周一周日),比如选择<td>周一</td>,<td>周三</td>,<td>周五</td>我用js attr 给td添加一个selected和value(1-7分别对应周一到周日),然以后取seleted了的value,如1,3,5当成一个数组,然后还有开始日期start和结束日期end。需求就是需要计算开始日期和结束日期之间的所有选中的周一周三周五的日期。如果所示:

 

以下是js代码:最终值需要调用addWeeks(startTime,endTime,weeks)只需要填写开始日期、结束日期和选择的值数组就行。

function addDate($now,$addCount){
  $now+=$addCount*1000*60*60*24;
  var d=new Date($now);
  return d;
}
function addTd($addCount){
  var td="";
  for(var i=0;i<$addCount;i++){
    td+="<td></td>";
  }
  return td;
}
function addDateWithTd($dt){
  var td="<td>";
  var dt=new Date($dt);
  td+=(dt.getMonth()+1)+"."+dt.getDate();
  //td+=dt.toLocaleDateString();
  td+="</td>";
  return td;
}

 


function addWeeks(startTime,endTime,weeks){
  var start=new Date(startTime);
  var b;
  var c=new Date();
  alert(c.toLocaleDateString());
  alert(start.toLocaleDateString());
  var diff=Math.floor((c.getTime()-start.getTime())/(1000*60*60*24));
  alert(diff);
  if(diff<0){
    b=start;
  }else{
    b=addDate(c.getTime(),1);
  }
  var e=new Date(endTime);

  var $totalDay=(e-b)/1000/60/60/24+1
  //var weeks=[1,3,0];
  var $td="<td></td>";
  var $btr="<tr>";
  var $etr="</tr>";
  var $all="";
  var num=b.getDay();
  if(b.getDay()==0){
    num=7;
  }
  $all+=$btr;
  $all+=addTd(num-1);
  for(var i=0;i<$totalDay;i++){
    var flag=false;
  if(b.getDay()==1){
    $all+=$btr;
  }
  for(var j=0;j<weeks.length;j++){
    if(b.getDay()==weeks[j]){
      $all+=addDateWithTd(b.getTime());
      flag=true;
      break;
    }
  }
  if(!flag){
    $all+=$td;
  }
  if(b.getDay()==0){
    $all+=$etr;
  }
    b=addDate(b.getTime(),1);
 }
  if(e.getDay()==0){
    num=7;
  }else{
    num=e.getDay();
    $all+=addTd(7-num);
  }
  $all+=$etr;
  return $all;
}

转载于:https://www.cnblogs.com/345214483-qq/p/4788249.html

要获取当前日期并根据当前日期计算出当前周、月和年的具体时间范围,你可以使用 JavaScript 中的 Date 对象和一些日期处理方法。以下是一个示例代码,演示如何获取当前日期的时间范围: ```javascript // 获取当前日期 const today = new Date(); // 获取当前周的起始日期和结束日期 const startOfWeek = new Date(today.getFullYear(), today.getMonth(), today.getDate() - today.getDay()); const endOfWeek = new Date(today.getFullYear(), today.getMonth(), today.getDate() + (6 - today.getDay())); // 获取当前月的起始日期和结束日期 const startOfMonth = new Date(today.getFullYear(), today.getMonth(), 1); const endOfMonth = new Date(today.getFullYear(), today.getMonth() + 1, 0); // 获取当前年的起始日期和结束日期 const startOfYear = new Date(today.getFullYear(), 0, 1); const endOfYear = new Date(today.getFullYear(), 11, 31); console.log("当前周的起始日期: " + startOfWeek.toLocaleDateString()); console.log("当前周的结束日期: " + endOfWeek.toLocaleDateString()); console.log("当前月的起始日期: " + startOfMonth.toLocaleDateString()); console.log("当前月的结束日期: " + endOfMonth.toLocaleDateString()); console.log("当前年的起始日期: " + startOfYear.toLocaleDateString()); console.log("当前年的结束日期: " + endOfYear.toLocaleDateString()); ``` 在这段代码中,我们使用 Date 对象来获取当前日期。然后,使用一些方法来计算出当前周、月和年的起始日期和结束日期。最后,使用 `toLocaleDateString()` 方法将日期转换为字符串并打印出来。 请注意,这里的日期范围是根据当前日期计算得出的,可能会因为不同的地区、时区和日历规则而有所不同。如果需要更精确的控制或适应特定需求,请根据实际情况进行相应的调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值