JavaScript+HTML5实现的日期比较功能示例


Posted in Javascript onJuly 12, 2017

本文实例讲述了JavaScript+HTML5实现的日期比较功能。分享给大家供大家参考,具体如下:

这里要在前面的文章《JavaScript实现设置默认日期范围为最近40天的方法》基础之上,进一步校验开始日期、结束日期是否合理。

比如:开始日期要小于等于结束日期,还有实现只能查询最近40天内的数据(设定为:结束日期减去开始日期要小于等于41,设为40也可以,关键看需求),如果要查询超过40天的数据,会直接报错。

在报错时,不会显示具体的错误,比如:结束日期大于当天日期,或者开始日期大于当天日期。

代码:

<!DOCTYPE HTML>
<html>
<head>
  <meta http-equiv="content-type" content="charset=utf8"></meta>
  <script type="text/javascript">
    //计算日期相差的天数
    function datediff(startdate,enddate)
    {
      //alert(typeof(startdate));
      //拆分字符串
      var d1 = startdate.split('-');
      var d2 = enddate.split('-');
      //重新定义2个日期
      var date1 = new Date(d1[0],d1[1],d1[2]);
      var date2 = new Date(d2[0],d2[1],d2[2]);
      //取得子1970-01-01到指定日期的毫秒数
      var dt1 = date1.getTime();
      var dt2 = date2.getTime();
      console.log(d1[0],d1[1],d1[2]);
      console.log(d2[0],d2[1],d2[2]);
      console.log(dt1,dt2,(dt2-dt1) / (24*60*60*1000));
      return (dt2-dt1) / (24*60*60*1000)
    }
    //响应查询按钮
    function query()
    {
      //先把输出内容情况
      var yy = document.getElementById("sp");
      yy.innerHTML = "";
      var date1 = document.getElementById("date1").value;
      var date2 = document.getElementById("date2").value;
      //判断开始日期是否大于结束日期
      if (date1 > date2)
      {
        alert("开始日期大于结束日期!请重新选择查询日期");
        return false;
      }
      //判断是否为最近40天的数据
      var today = dateToString(new Date());
      if (datediff(date1,today)<0 || datediff(date1,today)> 41 || datediff(date2,today)< 0 || datediff(date2,today)> 41)
      {
        alert("只能查询最近40天范围的数据!请重新选择查询日期");
        return false;
      }
      //把选择的日期输出
      var xx = document.getElementsByName("day");
      var s="";
      for (var i=0;i<xx.length ;i++ )
      {
        if(xx[i].tagName == 'TD')
          s= s + xx[i].innerText;
          //alert(xx[i].innerText);
        else
        {
          if(xx[i].tagName == 'INPUT')
            s += xx[i].value;
        }
        if( i % 2 == 1)
          s+=";";
      }
      yy.innerHTML = s;
    }
    //实现把日期类型数据转化为标准的字符串格式
    function dateToString(d)
    {
      var y= d.getFullYear();
      var m= d.getMonth() + 1;
      var d=d.getDate();
      //把日期2017-1-6 格式化为标准的 2017-01-06
      //判断数字的长度是否是1,如果是1那么前面加上字符0
      if(m.toString().length == 1) m= "0" + m;
      if(d.toString().length == 1) d= "0" + d;
      return y+"-"+m+"-"+d;
    }
    //在页面加载的时候,初始化开始(40天前的日期)、结束日期(当天),实现默认查询最近40天的数据
    function onload()
    {
      //获取今天的日期,但是这个数据的格式不标准
      //也就是把 Fri Jan 06 2017 10:43:07 GMT+0800 转化成 2017-01-06 这种格式
      var d = new Date();
      var endDate = dateToString(d);
      //返回日期的原始值,也就是自xxx年xx月xx日 到今天的日期相差的毫秒数
      d = d.valueOf();
      d = d - 40*24*60*60*1000;
      d = new Date(d);
      var startDate = dateToString(d);
      //把日期值输出到chrome的日志中,方便调试
      console.log(d);
      console.log(startDate);
      console.log(endDate);
      var date1 = document.getElementById("date1");
      var date2 = document.getElementById("date2");
      date1.value = startDate;
      date2.value = endDate;
    }
  </script>
</head>
<body onload="onload()">
  <table>
    <tr>
      <td name="day">开始日期: <input type="date" name="day" id="date1" /></td>
    </tr>
    <tr>
      <td name="day">结束日期:<input type="date" name="day" id="date2"/></td>
      <td><input type="button" value="查 询" onclick="query()" /></td>
    </tr>
  </table>
  <hr>
  <p><span id="sp"></span><p>
</body>
</html>

运行效果:

JavaScript+HTML5实现的日期比较功能示例

PS:这里再为大家推荐几款比较实用的天数计算在线工具供大家使用:

在线日期/天数计算器:
http://tools.3water.com/jisuanqi/date_jisuanqi

在线日期计算器/相差天数计算器:
http://tools.3water.com/jisuanqi/datecalc

在线日期天数差计算器:
http://tools.3water.com/jisuanqi/onlinedatejsq

在线天数计算器:
http://tools.3water.com/jisuanqi/datejsq

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
根据鼠标的位置动态的控制层的位置
Nov 24 Javascript
javascript实现日历控件(年月日关闭按钮)
Dec 12 Javascript
json+jQuery实现的无限级树形菜单效果代码
Aug 27 Javascript
理解 JavaScript Scoping &amp; Hoisting(二)
Nov 18 Javascript
关于cookie的初识和运用(js和jq)
Apr 07 Javascript
JavaScript类的写法
Sep 17 Javascript
Angular.js中用ng-repeat-start实现自定义显示
Oct 18 Javascript
js判断iframe中元素是否存在的实现代码
Dec 24 Javascript
jquery操作select取值赋值与设置选中实例
Feb 28 Javascript
Vue动态实现评分效果
May 24 Javascript
利用SpringMVC过滤器解决vue跨域请求的问题
Feb 10 Javascript
基于Fixed定位的框选功能的实现代码
May 13 Javascript
JavaScript实现设置默认日期范围为最近40天的方法分析
Jul 12 #Javascript
Bootstrap提示框效果的实例代码
Jul 12 #Javascript
JavaScript输出所选择起始与结束日期的方法
Jul 12 #Javascript
微信小程序三级联动地址选择器的实例代码
Jul 12 #Javascript
微信小程序 共用变量值的实现
Jul 12 #Javascript
JS中LocalStorage与SessionStorage五种循序渐进的使用方法
Jul 12 #Javascript
vue.js中v-on:textInput无法执行事件问题的解决过程
Jul 12 #Javascript
You might like
PHP中使用foreach和引用导致程序BUG的问题介绍
2012/09/05 PHP
PHP源码分析之变量的存储过程分解
2014/07/03 PHP
PHP中有关长整数的一些操作教程
2019/09/11 PHP
一款JavaScript压缩工具:X2JSCompactor
2007/06/13 Javascript
javascript中负数算术右移、逻辑右移的奥秘探索
2013/10/17 Javascript
用js代码改变单选框选中状态的简单实例
2013/12/18 Javascript
ajax如何实现页面局部跳转与结果返回
2015/08/24 Javascript
vue实现简单实时汇率计算功能
2017/01/15 Javascript
ES6深入理解之“let”能替代”var“吗?
2017/06/28 Javascript
node.js 模块和其下载资源的镜像设置的方法
2018/09/06 Javascript
vant时间控件使用方法详解
2020/12/24 Javascript
Python中的异常处理简明介绍
2015/04/13 Python
Python实现的根据IP地址计算子网掩码位数功能示例
2018/05/23 Python
解决Shell执行python文件,传参空格引起的问题
2018/10/30 Python
对numpy中数组转置的求解以及向量内积计算方法
2018/10/31 Python
Flask核心机制之上下文源码剖析
2018/12/25 Python
基于sklearn实现Bagging算法(python)
2019/07/11 Python
Python类绑定方法及非绑定方法实例解析
2020/10/09 Python
Python爬虫之Selenium多窗口切换的实现
2020/12/04 Python
多视角3D逼真HTML5水波动画
2016/03/03 HTML / CSS
卡塔尔航空官方网站:Qatar Airways
2017/02/08 全球购物
印尼最大的婴儿用品购物网站:Orami
2017/09/28 全球购物
法国房车租赁网站:Yescapa
2019/08/26 全球购物
SAZAC的动物连体衣和动物睡衣:Kigurumi Shop
2020/03/14 全球购物
什么是会话Bean
2015/05/14 面试题
交通专业个人自荐信格式
2013/09/23 职场文书
技术岗位竞聘演讲稿
2014/05/16 职场文书
护士求职信
2014/07/05 职场文书
运动会铅球比赛加油稿
2014/09/26 职场文书
人民调解协议书范本
2014/10/11 职场文书
党员思想汇报材料
2014/12/19 职场文书
冬季作息时间调整通知
2015/04/24 职场文书
2015年中学总务处工作总结
2015/07/22 职场文书
纪律委员竞选稿
2015/11/19 职场文书
2016大学军训通讯稿
2015/11/25 职场文书
优胜劣汰,强者为王——读《鲁滨逊漂流记》有感
2019/08/15 职场文书