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 相关文章推荐
给artDialog 5.02 增加ajax get功能详细介绍
Nov 13 Javascript
JQuery显示、隐藏div的几种方法简明总结
Apr 16 Javascript
基于JavaScript实现生成名片、链接等二维码
Sep 20 Javascript
js实现对ajax请求面向对象的封装
Jan 08 Javascript
正则表达式,替换所有HTML标签的简单实例
Nov 28 Javascript
JS模拟实现ECMAScript5新增的数组方法
Mar 20 Javascript
Angularjs使用指令做表单校验的方法
Mar 31 Javascript
浅谈箭头函数写法在ReactJs中的使用
Aug 22 Javascript
vue2.0+ 从插件开发到npm发布的示例代码
Apr 28 Javascript
React为 Vue 引入容器组件和展示组件的教程详解
May 03 Javascript
实例讲解JavaScript截取字符串
Nov 30 Javascript
原型和原型链 prototype和proto的区别详情
Nov 02 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
全国FM电台频率大全 - 4 山西省
2020/03/11 无线电
认识并使用PHP超级全局变量
2010/01/26 PHP
在smarty模板中使用PHP函数的方法
2011/04/23 PHP
php tp验证表单与自动填充函数代码
2012/02/22 PHP
PHP把网页保存为word文件的三种方法
2014/04/01 PHP
Yii2简单实现给表单添加验证码的方法
2016/07/18 PHP
js技巧--转义符&quot;\&quot;的妙用
2007/01/09 Javascript
Add Formatted Text to a Word Document
2007/06/15 Javascript
JavaScript 对象模型 执行模型
2009/12/06 Javascript
另一个javascript小测验(代码集合)
2011/07/27 Javascript
深入探密Javascript数组方法
2015/01/08 Javascript
JavaScript 浏览器兼容性总结及常用浏览器兼容性分析
2016/03/30 Javascript
使用vue实现点击按钮滑出面板的实现代码
2017/01/10 Javascript
canvas实现图像截取功能
2017/02/06 Javascript
详解React Native顶|底部导航使用小技巧
2017/09/14 Javascript
基于Angular 8和Bootstrap 4实现动态主题切换的示例代码
2020/02/11 Javascript
js实现无缝轮播图效果
2020/03/09 Javascript
详解Howler.js Web音频播放终极解决方案
2020/08/23 Javascript
利用Anaconda完美解决Python 2与python 3的共存问题
2017/05/25 Python
python随机数分布random测试
2018/08/27 Python
浅谈python中真正关闭socket的方法
2018/12/18 Python
Python2与Python3的区别实例分析
2019/04/11 Python
Python面向对象程序设计类的多态用法详解
2019/04/12 Python
关于Python内存分配时的小秘密分享
2019/09/05 Python
在pandas中遍历DataFrame行的实现方法
2019/10/23 Python
Python使用requests模块爬取百度翻译
2020/08/25 Python
详解Python调用系统命令的六种方法
2021/01/28 Python
印度在线内衣和时尚目的地:Zivame
2017/09/28 全球购物
澳大利亚百货公司:David Jones
2018/02/08 全球购物
大学生实习感言
2014/01/16 职场文书
社区巾帼文明岗事迹材料
2014/06/03 职场文书
2015年营业员工作总结
2015/04/23 职场文书
护士长2015年终工作总结
2015/04/24 职场文书
简单的辞职信范文(2016最新版)
2015/05/12 职场文书
SQL基础的查询语句
2021/11/11 MySQL
Java字符串逆序方法详情
2022/03/21 Java/Android