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 相关文章推荐
取选中的radio的值
Jan 11 Javascript
js带点自动图片轮播幻灯片特效代码分享
Sep 07 Javascript
javascript基础语法学习笔记
Jan 04 Javascript
jQuery使用中可能被XSS攻击的一些危险环节提醒
May 24 Javascript
Vue.js每天必学之计算属性computed与$watch
Sep 05 Javascript
form+iframe解决跨域上传文件的方法
Nov 18 Javascript
激动人心的 Angular HttpClient的源码解析
Jul 10 Javascript
多个vue子路由文件自动化合并的方法
Sep 03 Javascript
layer.alert回调函数执行关闭弹窗的实例
Sep 11 Javascript
浅谈JS中几种轻松处理'this'指向方式
Sep 16 Javascript
p5.js临摹动态图形的方法
Oct 23 Javascript
Vue 图片压缩并上传至服务器功能
Jan 15 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加密解密的代码
2006/10/09 PHP
php时区转换转换函数
2014/01/07 PHP
php pdo oracle中文乱码的快速解决方法
2016/05/16 PHP
Expandable &quot;Detail&quot; Table Rows
2007/08/29 Javascript
JS打开层/关闭层/移动层动画效果的实例代码
2013/05/11 Javascript
用js设置下拉框为只读的小技巧
2014/04/10 Javascript
JS判断网页广告是否被浏览器拦截过滤的代码
2015/04/05 Javascript
javascript实现下班倒计时效果的方法(可桌面通知)
2015/07/10 Javascript
js实现选中复选框文字变色的方法
2015/08/14 Javascript
javascript对象的相关操作小结
2016/05/16 Javascript
JavaScript 字符串常用操作小结(非常实用)
2016/11/30 Javascript
easyui datebox 时间限制,datebox开始时间限制结束时间,datebox截止日期比起始日期大的实现代码
2017/01/12 Javascript
JS简单实现点击按钮或文字显示遮罩层的方法
2017/04/27 Javascript
AngularJs 终极购物车(实例讲解)
2017/11/08 Javascript
vuejs实现本地数据的筛选分页功能思路详解
2017/11/15 Javascript
vue.js中toast用法及使用toast弹框的实例代码
2018/08/27 Javascript
javascript的hashCode函数实现代码小结
2020/08/11 Javascript
JS中多层次排序算法的实现代码
2021/01/06 Javascript
Python类方法__init__和__del__构造、析构过程分析
2015/03/06 Python
pycharm 配置远程解释器的方法
2018/10/28 Python
python调用c++返回带成员指针的类指针实例
2019/12/12 Python
Python文本文件的合并操作方法代码实例
2020/03/31 Python
树莓派4B安装Tensorflow的方法步骤
2020/07/16 Python
北美大型运动类产品商城:Champs Sports
2017/01/12 全球购物
HealthElement海外旗舰店:新西兰大卖场
2018/02/23 全球购物
PHP中如何使用Cookie
2015/10/28 面试题
介绍一下grep命令的使用
2012/06/28 面试题
解除劳动合同协议书
2014/09/17 职场文书
2014坚持党风廉政建设思想汇报
2014/09/18 职场文书
入党积极分子对十八届四中全会期盼的思想汇报
2014/10/17 职场文书
2014年教育工作总结
2014/11/26 职场文书
魂断蓝桥观后感
2015/06/10 职场文书
学雷锋主题班会教案
2015/08/13 职场文书
SQL实现LeetCode(176.第二高薪水)
2021/08/04 MySQL
MySQL表锁、行锁、排它锁及共享锁的使用详解
2022/04/02 MySQL
《吸血鬼幸存者》新内容发布 追加多个全新模式
2022/04/07 其他游戏