lhgcalendar时间插件限制只能选择三个月的实现方法


Posted in Javascript onJuly 03, 2017

废话不多说,直接上代码

/**
 * lhgcalendar时间插件限制只能选择三个月
 * @d 获取到的开始时间
 * @m 要限制的时间的长度(月)
 *将最后获得的结束时间与开始时间存放在input中
 */
  function addMoth(d,m){
    var ds=d.split('-');
    var ds1 = ds[1]-1+m;
    var ds2 = ds[2];
    d=new Date( ds[0],ds1,ds[2]);
    var cond1 = parseInt(ds[0]) % 4 == 0; //条件1:年份必须要能被4整除
    var cond2 = parseInt(ds[0]) % 100 != 0; //条件2:年份不能是整百数
    var cond3 = parseInt(ds[0]) % 400 ==0;
    if(cond1 && cond2 || cond3 ){ //如果是闰年,选择后面的时间可以到月末
      if(parseInt(ds2) == 29){
        ds2 = 31
      }
    }else {
      if (parseInt(ds2) == 28) {
        ds2 = 31
      }
    }
    if(ds1 < 10){
      ds1 = '0'+ ds1 ;//月份小于10加0
    }
    if(ds1 > 12){//跨年年份+1
      ds1 = ds1 - 12;
      ds[0] = parseInt(ds[0]) + 1;
      var cond1 = parseInt(ds[0]) % 4 == 0; //条件1:年份必须要能被4整除
      var cond2 = parseInt(ds[0]) % 100 != 0; //条件2:年份不能是整百数
      var cond3 = parseInt(ds[0]) % 400 ==0;
      if(cond1 && cond2 || cond3 ){
        if(parseInt(ds1) == 2){//如果到2月,闰年最大29,平年28
          ds2 = 29
        }
      }else {
        if (parseInt(ds1) == 2) {
          ds2 = 28
        }
      }
      ds1 = '0'+ ds1 ;
    }
    if( ds2 < 10){
      ds2 = '0' +ds2;
    }
    d1 = new Date( ds[0],ds1,ds2);
    return ds[0] + '-' + ds1 +'-'+ds2;
  }
  //如果开始选择结束日期,给结束日期减去三个月
  function reduceMoth(d,m){
    var ds=d.split('-');
    if(ds[1] == 2){//如果选择的是2月,开始时间可以选到前一年11月30
      ds[2] = 30
    }
    var ds1 = ds[1]-1-m;
    var ds2 = ds[2];
    d=new Date( ds[0],ds1,ds[2]);

    if( ds1 >= 1 && ds1 < 10){
      ds1 = '0'+ ds1 ;
    }

    if(ds1 < 1){//跨年,开始时间年份-1,月份+12
      ds[0] = parseInt(ds[0]) - 1;
      ds1 = ds1 + 12;

    }

    if(ds2 < 10){
      ds2 = '0' +ds2;
    }
    var cond1 = parseInt(ds[0]) % 4 == 0; //条件1:年份必须要能被4整除
    var cond2 = parseInt(ds[0]) % 100 != 0; //条件2:年份不能是整百数
    var cond3 = parseInt(ds[0]) % 400 ==0;
    if(cond1 && cond2 || cond3 ){//如果开始时间到闰年2月可选择29,平年28
      if(parseInt(ds1) == 2){
        ds2 = 29
      }
    }else {
      if(parseInt(ds1) == 2){
        ds2 = 28
      }
    }
    d1 = new Date( ds[0],ds1,ds2);
    return ds[0] + '-' + ds1 +'-'+ds2;
  }

以上这篇lhgcalendar时间插件限制只能选择三个月的实现方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JavaScript中使用构造函数实现继承的代码
Aug 12 Javascript
理解Javascript_14_函数形式参数与arguments
Oct 20 Javascript
Javascript中的window.event.keyCode使用介绍
Apr 26 Javascript
javascript工具库代码
Mar 29 Javascript
jquery 中多条件选择器,相对选择器,层次选择器的区别
Jul 03 Javascript
jQuery插件slick实现响应式移动端幻灯片图片切换特效
Apr 12 Javascript
BootStrap智能表单demo示例详解
Jun 13 Javascript
JS实现关闭当前页而不弹出提示框的方法
Jun 22 Javascript
JS正则匹配URL网址的方法(可匹配www,http开头的一切网址)
Jan 06 Javascript
vue  自定义组件实现通讯录功能
Sep 30 Javascript
适合前端Vue开发童鞋的跨平台Weex的使用详解
Oct 16 Javascript
vue实现打地鼠小游戏
Aug 21 Javascript
JavaScript生成图形验证码
Aug 24 #Javascript
JS滚动到指定位置导航栏固定顶部
Jul 03 #Javascript
mac上node.js环境的安装测试
Jul 03 #Javascript
关于页面刷新vuex数据消失问题解决方案
Jul 03 #Javascript
解决VUEX刷新的时候出现数据消失
Jul 03 #Javascript
vue.js学习之UI组件开发教程
Jul 03 #Javascript
用js将long型数据转换成date型或datetime型的实例
Jul 03 #Javascript
You might like
CodeIgniter图像处理类的深入解析
2013/06/17 PHP
整理php防注入和XSS攻击通用过滤
2015/09/13 PHP
解读PHP的Yii框架中请求与响应的处理流程
2016/03/17 PHP
TNC vs IO BO3 第一场2.13
2021/03/10 DOTA
JavaScript Perfection kill 测试及答案
2010/03/23 Javascript
Jquery解析json数据详解
2013/12/26 Javascript
jQuery学习笔记之 Ajax操作篇(三) - 过程处理
2014/06/23 Javascript
js获取元素相对窗口位置的实现代码
2014/09/28 Javascript
JavaScript实现的一个计算数字步数的算法分享
2014/12/06 Javascript
easyui validatebox验证
2016/04/29 Javascript
JavaScript中的数组遍历forEach()与map()方法以及兼容写法介绍
2016/05/19 Javascript
Java中int与integer的区别(基本数据类型与引用数据类型)
2017/02/19 Javascript
Node.js+jade+mongodb+mongoose实现爬虫分离入库与生成静态文件的方法
2017/09/20 Javascript
JS实现websocket长轮询实时消息提示的效果
2017/10/10 Javascript
JavaScript原型链与继承操作实例总结
2018/08/24 Javascript
JS简单数组排序操作示例【sort方法】
2019/05/17 Javascript
Emberjs 通过 axios 下载文件的方法
2019/09/03 Javascript
Vue 实现输入框新增搜索历史记录功能
2019/10/15 Javascript
Vue中使用matomo进行访问流量统计的实现
2019/11/05 Javascript
Ant Design的可编辑Tree的实现操作
2020/10/31 Javascript
跟老齐学Python之有容乃大的list(3)
2014/09/15 Python
python查看zip包中文件及大小的方法
2015/07/09 Python
python  创建一个保留重复值的列表的补码
2018/10/15 Python
Python字典中的键映射多个值的方法(列表或者集合)
2018/10/17 Python
python flask解析json数据不完整的解决方法
2019/05/26 Python
Python Pandas 如何shuffle(打乱)数据
2019/07/30 Python
Python数据可视化:泊松分布详解
2019/12/07 Python
Python Mock模块原理及使用方法详解
2020/07/07 Python
Python ConfigParser模块的使用示例
2020/10/12 Python
幼儿园教师考核评语
2014/12/31 职场文书
2016年“5.12”护士节致辞
2015/07/31 职场文书
2016教师年度考核评语大全
2015/12/01 职场文书
同学聚会开幕词
2019/04/02 职场文书
工作转正自我鉴定范文
2019/06/21 职场文书
浅谈Python响应式类库RxPy
2021/06/14 Python
二维码条形码生成的JavaScript脚本库
2022/07/07 Javascript