JS实现简单的天数计算器完整实例


Posted in Javascript onApril 28, 2017

本文实例讲述了JS实现简单的天数计算器。分享给大家供大家参考,具体如下:

刚学了JS,想做个计算两个日期之间相差天数的东西,因为本人总是要算距离XX还有多少天。。

开始用很笨的方法写了一个,写完百度了一下,发现用 Date() 的话 几行代码就可以搞定。自己看语法的时候一扫而过,觉得会了,其实是不会的,至少在该用它的时候都想不到他有这个功能,这就是掌握类库的重要性吧。

先放上写的很笨的那种方法:

index.html

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>天数计算器</title>
  <script src="../lib/js/jquery-2.1.1.js"></script>
  <script src="year.js"></script>
</head>
<body>
  <h2>天数计算器</h2>
  <div>
    <label>起:</label>
    <input type="text" id="beginYear">
    <label >年</label>
    <input type="text" id="beginMonth">
    <label >月</label>
    <input type="text" id="beginDay">
    <label >日</label>
  </div>
  <br>
  <div>
    <label>止:</label>
    <input type="text" id="endYear">
    <label >年</label>
    <input type="text" id="endMonth">
    <label >月</label>
    <input type="text" id="endDay">
    <label >日</label>
  </div>
  <br>
  <div>
    <input type="button" id="submit" value="确定" onclick="days()">
    <input type="button" id="cancel" value="取消">
  </div>
  <script>
    function days() {
      // 一年的第几天
      var day1 = YEAR.dayOfYear( Number($("#beginYear").val()), Number($("#beginMonth").val()) ) + Number($("#beginDay").val());
      var day2 = YEAR.dayOfYear( Number($("#endYear").val()), Number($("#endMonth").val()) ) + Number($("#endDay").val());
      var year1 = Number($("#beginYear").val());
      var year2 = Number($("#endYear").val());
      if ( year1 < year2 ) {
        var sum = YEAR.yearCount( Number($("#beginYear").val()), Number($("#endYear").val()) );
        if ( YEAR.isLeapYear( year1 ) )
          sum = sum + (366 - day1) + day2;
        else
          sum = sum + (365 - day1) + day2;
        alert("之间有" + sum + "天!");
      } else if ( year1 == year2 ) {
          sum = day2 - day1;
        alert("之间有" + sum + "天!");
      } else {
        $(function() {
          alert("请输入正确的起止时间!");
        });
      }
    }
  </script>
</body>
</html>

year.js

window.YEAR = {
  // 判断是不是闰年
  isLeapYear : function (year) {
    if((year % 4 == 0 && year % 100 !=0 ) || year % 400 == 0)
      return true;
    else
      return false;
  },
  // 相差的整年数,换算成天数
  yearCount : function (yearBefore, yearAfter) {
    var year = yearBefore + 1;
    var sum = 0;
    while (year < yearAfter) {
      if ( YEAR.isLeapYear(year) )
        sum = sum + 366;
      else
        sum = sum + 365;
      year++;
    }
    return sum;
  },
  // 一年中的第几天,只计算到月份
  dayOfYear : function (year, month ) {
    var myYear = year;
    var sum = 0;
    for(var i = 1; i < month; i++) {
      switch(i) {
        case 1:
        case 3:
        case 5:
        case 7:
        case 8:
        case 10:
          sum = sum + 31;
          break;
        case 4:
        case 6:
        case 9:
        case 11:
          sum = sum + 30;
          break;
        case 2:
          if(YEAR.isLeapYear(myYear))
            sum = sum + 29;
          else
            sum = sum + 28;
          break;
      }
    }
    return sum;
  },
};

下面说另一种方法,主要用到Date里面的Date.parse(),具体使用详情,w3school上面有。下面代码~

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>天数计算器</title>
  <script src="../lib/js/jquery-2.1.1.js"></script>
  <script src="year.js"></script>
</head>
<body>
  <h2>天数计算器</h2>
  <div>
    <label>起:</label>
    <input type="text" id="beginYear">
    <label >年</label>
    <input type="text" id="beginMonth">
    <label >月</label>
    <input type="text" id="beginDay">
    <label >日</label>
  </div>
  <br>
  <div>
    <label>止:</label>
    <input type="text" id="endYear">
    <label >年</label>
    <input type="text" id="endMonth">
    <label >月</label>
    <input type="text" id="endDay">
    <label >日</label>
  </div>
  <br>
  <div>
    <input type="button" id="submit" value="确定" onclick="test()">
    <input type="button" id="cancel" value="取消">
  </div>
  <script>
    function test() {
      var minutes = 1000 * 60
      var hours = minutes * 60
      var days = hours * 24
      var y1 = Number($("#beginYear").val());
      var m1 = Number($("#beginMonth").val());
      var d1 = Number($("#beginDay").val());
      var y2 = Number($("#endYear").val());
      var m2 = Number($("#endMonth").val());
      var d2 = Number($("#endDay").val());
      var date1 = $("#beginYear").val() +',' + $("#beginMonth").val() +','+ $("#beginDay").val();
      var date2 = $("#endYear").val() +','+ $("#endMonth").val() + ','+$("#endDay").val();
      var day1 = Date.parse(date1);
      var day2 = Date.parse(date2);
      d = day2 - day1;
      d = d / days;
      alert("之间有" + d + "天!");
    }
  </script>
</body>
</html>

以后要继续优化界面,争取使用起来感觉更好,尤其是界面~

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 相关文章推荐
学习ExtJS accordion布局
Oct 08 Javascript
jquery索引在使用中的一些困惑
Oct 24 Javascript
JavaScript版的TwoQueues缓存模型
Dec 29 Javascript
JS实现在网页中弹出一个输入框的方法
Mar 03 Javascript
一个用jquery写的判断div滚动条到底部的方法【推荐】
Apr 29 Javascript
JavaScript中Number对象的toFixed() 方法详解
Sep 02 Javascript
jQuery编写textarea输入字数限制代码
Mar 23 jQuery
WebPack配置vue多页面的技巧
May 15 Javascript
9102年webpack4搭建vue项目的方法步骤
Feb 20 Javascript
JS+html5实现异步上传图片显示上传文件进度条功能示例
Nov 09 Javascript
JavaScript 禁止用户保存图片的实现代码
Apr 28 Javascript
简单聊聊Vue中的计算属性和属性侦听
Oct 05 Vue.js
jQuery实现jQuery-form.js实现异步上传文件
Apr 28 #jQuery
js实现移动端编辑添加地址【模仿京东】
Apr 28 #Javascript
angularjs中使用ng-bind-html和ng-include的实例
Apr 28 #Javascript
d3.js入门教程之数据绑定详解
Apr 28 #Javascript
jQuery tip提示插件(实例分享)
Apr 28 #jQuery
JS实现动态添加DOM节点和事件的方法示例
Apr 28 #Javascript
jQuery自定义元素右键点击事件(实现案例)
Apr 28 #jQuery
You might like
用DBSQL类加快开发MySQL数据库程序的速度
2006/10/09 PHP
php实现的获取网站备案信息查询代码(360)
2013/09/23 PHP
PHP程序员不应该忽略的3点
2015/10/09 PHP
Zend Framework分页类用法详解
2016/03/22 PHP
使用SMB共享来绕过php远程文件包含的限制执行RFI的利用
2019/05/31 PHP
jQuery替换字符串(实例代码)
2013/11/13 Javascript
jQuery实现在textarea指定位置插入字符或表情的方法
2015/03/11 Javascript
jquery插件orbit.js实现图片折叠轮换特效
2015/04/14 Javascript
微信小程序 删除项目工程实现步骤
2016/11/10 Javascript
JavaScript实现图片懒加载(Lazyload)
2016/11/28 Javascript
VUE中使用Vue-resource完成交互
2017/07/21 Javascript
js实现手机web图片左右滑动效果
2017/12/29 Javascript
Bootstrap导航菜单点击后无法自动添加active的处理方法
2018/08/10 Javascript
小程序封装路由文件和路由方法(5种全解析)
2019/05/26 Javascript
jquery实现动态创建form并提交的方法示例
2019/05/27 jQuery
原生js+ajax分页组件
2020/01/30 Javascript
vue和小程序项目中使用iconfont的方法
2020/05/19 Javascript
详解Python中内置的NotImplemented类型的用法
2015/03/31 Python
在NumPy中创建空数组/矩阵的方法
2018/06/15 Python
基于tensorflow指定GPU运行及GPU资源分配的几种方式小结
2020/02/03 Python
在Sublime Editor中配置Python环境的详细教程
2020/05/03 Python
英国最大的电子产品和家电零售企业:Currys PC World
2016/09/24 全球购物
Maison Lab荷兰:名牌Outlet购物
2018/08/10 全球购物
Simons官方网站:加拿大时尚零售商
2020/02/20 全球购物
开业庆典邀请函
2014/01/08 职场文书
公司承诺书怎么写
2014/05/24 职场文书
成绩报告单家长评语
2014/12/30 职场文书
用人单位的规章制度,怎样制定才是有效的?
2019/07/09 职场文书
你会写报告?产品体验报告到底该怎么写?
2019/08/14 职场文书
nginx location优先级的深入讲解
2021/03/31 Servers
python 遍历磁盘目录的三种方法
2021/04/02 Python
Python中for后接else的语法使用
2021/05/18 Python
浅谈python中的多态
2021/06/15 Python
Redis三种集群模式详解
2021/10/05 Redis
一文搞懂MySQL索引页结构
2022/02/28 MySQL
python的列表生成式,生成器和generator对象你了解吗
2022/03/16 Python