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 原型模式实现OOP的再研究
Apr 09 Javascript
基于JQuery的多标签实现代码
Sep 19 Javascript
一个页面放2段图片滚动代码出现冲突的问题如何解决
Dec 21 Javascript
js绑定事件this指向发生改变的问题解决方法
Apr 23 Javascript
js history对象简单实现返回和前进
Oct 30 Javascript
javascript中SetInterval与setTimeout的定时器用法
Aug 24 Javascript
浅谈javascript中关于日期和时间的基础知识
Jul 13 Javascript
JavaScript 对象详细整理总结
Sep 29 Javascript
清除js缓存的多种方法总结
Dec 09 Javascript
基于vue2的table分页组件实现方法
Mar 20 Javascript
js数组去重的N种方法(小结)
Jun 07 Javascript
微信小程序实现的动态设置导航栏标题功能示例
Jan 31 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
解析thinkphp基本配置 convention.php
2013/06/18 PHP
解析web文件操作常见安全漏洞(目录、文件名检测漏洞)
2013/06/29 PHP
joomla数据库操作示例代码
2016/01/06 PHP
PHP的反射机制实例详解
2017/03/29 PHP
jquery.validate使用攻略 第一部
2010/07/01 Javascript
原生js的弹出层且其内的窗口居中
2014/05/14 Javascript
JavaScript中通过prototype属性共享属性和方法的技巧实例
2015/03/13 Javascript
JavaScript预解析及相关技巧分析
2016/04/21 Javascript
jQuery图片轮播插件——前端开发必看
2016/05/31 Javascript
JS简单实现tab切换效果的多窗口显示功能
2016/09/07 Javascript
详解微信小程序 wx.uploadFile 的编码坑
2017/01/23 Javascript
js实现拖拽上传图片功能
2017/08/01 Javascript
详解npm 配置项registry修改为淘宝镜像
2018/09/07 Javascript
Vue中插入HTML代码的方法
2018/09/21 Javascript
详解小程序循环require之坑
2019/03/08 Javascript
Koa从零搭建到Api实现项目的搭建方法
2019/07/30 Javascript
JavaScript实现复选框全选和取消全选
2020/11/20 Javascript
Python抓取Discuz!用户名脚本代码
2013/12/30 Python
如何在Python函数执行前后增加额外的行为
2016/10/20 Python
Python中str is not callable问题详解及解决办法
2017/02/10 Python
python爬取足球直播吧五大联赛积分榜
2018/06/13 Python
tensorflow之变量初始化(tf.Variable)使用详解
2020/02/06 Python
python 常用日期处理-- datetime 模块的使用
2020/09/02 Python
CSS3绘制不规则图形的一些方法示例
2015/11/07 HTML / CSS
解决canvas转base64/jpeg时透明区域变成黑色背景的方法
2016/10/23 HTML / CSS
Qoo10马来西亚:全球时尚和引领潮流的购物市场
2016/08/25 全球购物
YSL Beauty加拿大官方商城:圣罗兰美妆加拿大
2017/05/15 全球购物
巴西女装购物网站:Eclectic
2018/04/24 全球购物
navabi英国:设计师大码女装
2019/06/25 全球购物
英国电子专家:maplin
2019/09/04 全球购物
大学生个人实习的自我评价
2014/02/15 职场文书
保卫科工作岗位职责
2014/03/01 职场文书
关于工作时间玩手机的检讨书
2014/09/18 职场文书
生鲜超市—未来中国最具有潜力零售业态
2019/08/02 职场文书
Windows10下安装MySQL8
2021/04/06 MySQL
Python的代理类实现,控制访问和修改属性的权限你都了解吗
2022/03/21 Python