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 相关文章推荐
js停止输出代码
Jul 20 Javascript
Jquery Ajax请求代码(2)
Jan 07 Javascript
jquery 文本上下无缝滚动,鼠标放上去就停止 小例子
Jun 05 Javascript
给ListBox添加双击事件示例代码
Dec 02 Javascript
JQuery中使用Ajax赋值给全局变量失败异常的解决方法
Aug 18 Javascript
详解JavaScript设计模式开发中的桥接模式使用
May 18 Javascript
jQuery实现web页面樱花坠落的特效
Jun 01 jQuery
使用Vue-cli 3.0搭建Vue项目的方法
Jun 07 Javascript
turn.js异步加载实现翻书效果
Jul 25 Javascript
vue 实现微信浮标效果
Sep 01 Javascript
layui扩展上传组件模拟进度条的方法
Sep 23 Javascript
浅析JavaScript 函数防抖和节流
Jul 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通用检测函数集合
2011/02/08 PHP
PHP 设计模式系列之 specification规格模式
2016/01/10 PHP
详谈php静态方法及普通方法的区别
2016/10/04 PHP
django中的ajax组件教程详解
2018/10/18 PHP
浅谈Laravel核心解读之Console内核
2018/12/02 PHP
PHP PDOStatement::getColumnMeta讲解
2019/02/01 PHP
php传值和传引用的区别点总结
2019/11/19 PHP
javascript窗口宽高,鼠标位置,滚动高度(详细解析)
2013/11/18 Javascript
JQuery 实现在同一页面锚点链接之间的平滑滚动
2014/10/29 Javascript
node.js中的querystring.stringify方法使用说明
2014/12/10 Javascript
TinyMCE提交AjaxForm获取不到数据的解决方法
2015/03/05 Javascript
Bootstrap每天必学之按钮(一)
2015/11/24 Javascript
全面解析标签页的切换方式
2016/08/21 Javascript
canvas实现流星雨的背景效果
2017/01/13 Javascript
详解JavaScript数组过滤相同元素的5种方法
2017/05/23 Javascript
详解使用PM2管理nodejs进程
2017/10/24 NodeJs
浅谈mint-ui 填坑之路
2017/11/06 Javascript
AngularJS基于MVC的复杂操作实例讲解
2017/12/31 Javascript
浅谈Node.js 中间件模式
2018/06/12 Javascript
vue-dplayer 视频播放器实例代码
2019/11/08 Javascript
AngularJS动态生成select下拉框的方法实例
2019/11/17 Javascript
python通过wxPython打开一个音频文件并播放的方法
2015/03/25 Python
5个很好的Python面试题问题答案及分析
2018/01/19 Python
django中forms组件的使用与注意
2019/07/08 Python
tensorflow指定GPU与动态分配GPU memory设置
2020/02/03 Python
Python接收手机短信的代码整理
2020/08/02 Python
关于HTML5的安全问题开发人员需要牢记的
2012/06/21 HTML / CSS
精选干货:Java精选笔试题附答案
2014/01/18 面试题
会计专业毕业生求职信分享
2014/01/03 职场文书
技校毕业生自荐书
2014/05/23 职场文书
年度优秀员工获奖感言
2014/08/15 职场文书
私人委托书格式
2014/09/10 职场文书
Python序列化与反序列化相关知识总结
2021/06/08 Python
python基于turtle绘制几何图形
2021/06/15 Python
使用 Apache Dubbo 实现远程通信(微服务架构)
2022/02/12 Servers
如何更改Win11声音输出设备?Win11声音输出设备四种更改方法
2022/04/08 数码科技