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 相关文章推荐
解javascript 混淆加密收藏
Jan 16 Javascript
jqeury eval将字符串转换json的方法
Jan 20 Javascript
Js实现网页键盘控制翻页的方法
Oct 30 Javascript
JavaScript的内存释放问题详解
Jan 21 Javascript
JavaScript获取网页表单提交方式的方法
Apr 02 Javascript
jQuery 遍历函数详解
Jul 05 Javascript
JQuery插件Marquee.js实现无缝滚动效果
Apr 26 Javascript
H5上传本地图片并预览功能
May 08 Javascript
jQuery插件select2利用ajax高效查询大数据列表(可搜索、可分页)
May 19 jQuery
vue登录注册及token验证实现代码
Dec 14 Javascript
浅谈Webpack 是如何加载模块的
May 24 Javascript
JS操作JSON常用方法(10w阅读)
Dec 06 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 mssql 分页SQL语句优化 持续影响
2009/04/26 PHP
ThinkPHP模板判断输出Defined标签用法详解
2014/06/30 PHP
PHP利用递归函数实现无限级分类的方法
2019/03/22 PHP
laravel-admin select框默认选中的方法
2019/10/03 PHP
jQuery移除元素自动解绑事件实现思路及代码
2014/05/31 Javascript
js跨浏览器的事件侦听器和事件对象的使用方法
2015/12/17 Javascript
js添加事件的通用方法推荐
2016/05/15 Javascript
JS中对象与字符串的互相转换详解
2016/05/20 Javascript
使用JavaScript触发过渡效果的方法
2017/01/19 Javascript
几种tab切换详解
2017/02/03 Javascript
jQuery实现鼠标滑过商品小图片上显示对应大图片功能【测试可用】
2018/04/27 jQuery
对angularJs中2种自定义服务的实例讲解
2018/09/30 Javascript
如何利用ES6进行Promise封装总结
2019/02/11 Javascript
JavaScript常用工具方法封装
2019/02/12 Javascript
通过js给网页加上水印背景实例
2019/06/17 Javascript
JavaScript创建表格的方法
2020/04/13 Javascript
[08:08]DOTA2-DPC中国联赛2月28日Recap集锦
2021/03/11 DOTA
windows下安装python paramiko模块的代码
2013/02/10 Python
Python输出由1,2,3,4组成的互不相同且无重复的三位数
2018/02/01 Python
Ubuntu下使用Python实现游戏制作中的切分图片功能
2018/03/30 Python
Python操作Mongodb数据库的方法小结
2019/09/10 Python
Python3 Tensorlfow:增加或者减小矩阵维度的实现
2020/05/22 Python
Django Auth用户认证组件实现代码
2020/10/13 Python
Appium+Python实现简单的自动化登录测试的实现
2021/01/26 Python
Auchan Direct波兰:欧尚在线杂货店
2016/10/19 全球购物
国际贸易专业推荐信
2013/11/15 职场文书
质量工程师岗位职责
2013/11/16 职场文书
奥巴马演讲稿
2014/01/08 职场文书
大学生通用个人的自我评价
2014/02/10 职场文书
善意的谎言事例
2014/02/15 职场文书
自我鉴定书
2014/03/24 职场文书
农村葬礼主持词
2014/03/31 职场文书
财会专业大学生求职信
2014/09/26 职场文书
房租涨价通知
2015/04/23 职场文书
学校工会工作总结2015
2015/05/19 职场文书
少儿励志名言(80句)
2019/08/14 职场文书