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 相关文章推荐
Prototype使用指南之ajax
Jan 10 Javascript
Prototype Array对象 学习
Jul 19 Javascript
腾讯UED 漂亮的提示信息效果代码
Sep 12 Javascript
jquery获取table中的某行全部td的内容方法
Mar 08 Javascript
提交表单时执行func方法实现代码
Mar 17 Javascript
js实现鼠标感应向下滑动隐藏菜单的方法
Feb 20 Javascript
分享纯手写漂亮的表单验证
Nov 19 Javascript
jQuery弹出遮罩层效果完整示例
Sep 13 Javascript
利用C/C++编写node.js原生模块的方法教程
Jul 07 Javascript
js学习总结_轮播图之渐隐渐现版(实例讲解)
Jul 17 Javascript
Mui使用jquery并且使用点击跳转新窗口的实例
Aug 19 jQuery
webpack+vue-cil 中proxyTable配置接口地址代理操作
Jul 18 Javascript
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
php生成xml简单实例代码
2009/12/16 PHP
windows7下php开发环境搭建图文教程
2015/01/06 PHP
php使用PDO执行SQL语句的方法分析
2017/02/16 PHP
PHP使用ActiveMQ实现消息队列的方法详解
2019/05/31 PHP
sina的lightbox效果。
2007/01/09 Javascript
jQuery的Ajax时无响应数据的解决方法
2010/05/25 Javascript
jquery 关于event.target使用的几点说明介绍
2013/04/26 Javascript
Javascript代码在页面加载时的执行顺序介绍
2013/05/03 Javascript
jquery实现对联广告的方法
2015/02/05 Javascript
JQuery实现动态适时改变字体颜色的方法
2015/03/10 Javascript
JS实现兼容各浏览器解析XML文档数据的方法
2015/06/01 Javascript
原生js实现百叶窗效果及原理介绍
2016/04/12 Javascript
JS/jQ实现免费获取手机验证码倒计时效果
2016/06/13 Javascript
微信小程序实现表单校验功能
2020/03/30 Javascript
webpack 3.X学习之多页面打包的方法
2018/09/04 Javascript
vue里的data要用return返回的原因浅析
2019/05/28 Javascript
在vue中使用echars实现上浮与下钻效果
2019/11/08 Javascript
一篇文章带你浅入webpack的DLL优化打包
2020/02/20 Javascript
基于vue-simple-uploader封装文件分片上传、秒传及断点续传的全局上传插件功能
2021/02/23 Vue.js
Python单例模式实例详解
2017/03/01 Python
Python补齐字符串长度的实例
2018/11/15 Python
django框架auth模块用法实例详解
2019/12/10 Python
Python操作dict时避免出现KeyError的几种解决方法
2020/09/20 Python
浅谈HTML5新增和废弃的标签
2019/04/28 HTML / CSS
薇诺娜官方网上商城:专注敏感肌肤
2017/05/25 全球购物
Pretty Little Thing美国:时尚女性服饰
2018/08/27 全球购物
德国家具折扣店:POCO
2020/02/28 全球购物
思想汇报范文
2013/11/04 职场文书
幼儿园门卫制度
2014/01/29 职场文书
村安全生产责任书
2014/08/25 职场文书
2014年医院十一国庆节活动方案
2014/09/15 职场文书
幼儿园亲子活动通知
2015/04/24 职场文书
离婚撤诉申请书范本
2015/05/18 职场文书
幼儿教师师德培训心得体会
2016/01/09 职场文书
详解Redis在SpringBoot工程中的综合应用
2021/10/16 Redis
nginx容器方式反向代理实战
2022/04/18 Servers