前台选择周几(周一周日),比如选择<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;
}

用js计算从开始到结束时间之内的按周值选定的更多相关文章

  1. JS计算距当前时间的时间差

    /** * JS获取距当前时间差 * * @param int time JS毫秒时间戳 * */ function get_time_diff(time) { var diff = ''; var ...

  2. js计算两个时间之间的间隔

    计算时间间隔的方法有很多,这里只是一种方式,可以方法里直接传入两个时间,也可以传入两个字符串格式的时间,在方法里解析一下就ok,这个例子里不传入参数,直接在方法里随便写一个时间来演示一下 fun() ...

  3. js计算发表的时间...分钟/小时以前/以后

    网上找的都好复杂,这本来就是个粗略显示通俗的时间,绕来绕去都晕了 function timeAgo(o){ var n=new Date().getTime(); var f=n-o; var bs= ...

  4. js计算两个时间相差天数

     //两个时间相差天数 兼容firefox chrome    function datedifference(sDate1, sDate2) {    //sDate1和sDate2是2006-12 ...

  5. js计算两个时间相差

    .filter('useTime', function() { return function(val) { // if (/.(.mp4)$/gi.test(url)) { // return JS ...

  6. js间隔一段时间打印数据库中的值

    https://blog.csdn.net/qq_33599109/article/details/78417474

  7. JS判断2个时间是否在同一周

    function isSameWeek(old, now) { var oneDayTime = 1000 * 60 * 60 * 24; var old_count = parseInt(+old ...

  8. js 计算当年还剩多少时间的倒数计时 javascript 原理解析【复制到编辑器查看推荐】

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  9. js 计算过去和未来的时间距离现在多少天?

    计算传入的任意一时间.计算出这个时间距离现在还有多少天!或者计算过去的时间距离现在已经过去了多少天! 返回值有两种! 1.负值 代表过去了多少天 2.正值 代表距离设定的时间还有多少天 说明:距离设定 ...

随机推荐

  1. Nagios配置文件详解

    首先要看看目前Nagios的主配置路径下有哪些文件.[root@nagios etc]# ll总用量 152-rwxrwxr-x. 1 nagios nagios 1825 9月  24 14:40 ...

  2. 【BZOJ4008】[HNOI2015]亚瑟王 期望

    [BZOJ4008][HNOI2015]亚瑟王 Description 小 K 不慎被 LL 邪教洗脑了,洗脑程度深到他甚至想要从亚瑟王邪教中脱坑. 他决定,在脱坑之前,最后再来打一盘亚瑟王.既然是最 ...

  3. [我的试题]Test of String

    1.前言 这是我出的第一套题目,话说感觉有点晚了,还是在向总安排下出的.我被安排的是字符串方面的内容,这应该相对而言是比较小众的知识点吧,但是一样的有作用的,也有很神的题目.所谓是NOIP模拟题,其实 ...

  4. Asterisk manager API(AMI)文档(中文版)

    Asterisk控制接口(AMI)允许管理客户端程序连接到一个asterisk实例并且可以通过TCP/IP流发送命令或读取事件.这在试图跟踪asterisk的状态或其中的电话客户端状态时很有用,AMI ...

  5. [转]windows下和Ubuntu下adb找不到设备的解决方法

    最近在做flash手机项目,用fb选择android设备调试,总会出现找不到设备的情况.看了很多帖子都解决不了问题,后来终于研究出来是adb无法找到设备的问题.最后通知这篇帖子终于解决了问题. 使用电 ...

  6. ES6 ( 三 ) 字符串扩展

    一.字符Unicode表示方法 ES6中可以使用以下6种方法表示字符 '\z' === 'z' // true '\172' === 'z' // true '\x7A' === 'z' // tru ...

  7. Hibernate加载数据失败failed to lazily initialize a collection of role

    在测试获取数据库中的数据或者在页面获取时,有时会遇到这样的错误提示: failed to lazily initialize a collection of role: com.exam.entity ...

  8. 一起来做chrome扩展《可配置的代理》

    一.本文主要涉及相关内容: chrome.proxy pacScript browser_action popup localStroage 二.预览 (代理运行截图,图中的代理服务器有防火墙,暂不对 ...

  9. python学习道路(day7note)(subprocess模块,面向对象)

    1.subprocess模块   因为方法较多我就写在code里面了,后面有注释 #!/usr/bin/env python #_*_coding:utf-8_*_ #linux 上调用python脚 ...

  10. a chip multiprocessor

    COMPUTER OR GANIZATION AND ARCHITECTURE DESIGNING FOR PERFORMANCE NINTH EDITION A multicore computer ...