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 相关文章推荐
jQuery实现表单input中提示文字value随鼠标焦点移进移出而显示或隐藏的代码
Mar 21 Javascript
js文本框输入点回车触发确定兼容IE、FF等
Nov 19 Javascript
JS实现上下左右对称的九九乘法表
Feb 22 Javascript
JS使用onerror捕获异常示例
Aug 03 Javascript
jQuery Validate 校验多个相同name的方法
May 18 jQuery
React注册倒计时功能的实现
Sep 06 Javascript
js实现每日签到功能
Nov 29 Javascript
JS中如何轻松遍历对象属性的方式总结
Aug 06 Javascript
基于JavaScript获取base64图片大小
Oct 18 Javascript
Vue实现开心消消乐游戏算法
Oct 22 Javascript
js刷新页面location.reload()用法详解
Dec 09 Javascript
vue使用exif获取图片旋转,压缩的示例代码
Dec 11 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
php5 mysql分页实例代码
2008/04/10 PHP
PHP+ACCESS 文章管理程序代码
2010/06/21 PHP
完善CodeIgniter在IDE中代码提示功能的方法
2014/07/19 PHP
js 事件小结 表格区别
2007/08/13 Javascript
ext form 表单提交数据的方法小结
2008/08/08 Javascript
SyntaxHighlighter语法高亮插件使用说明
2011/08/14 Javascript
用JQuery在网页中实现分隔条功能的代码
2012/08/09 Javascript
js Dialog 实践分享
2012/10/22 Javascript
js判断60秒以及倒计时示例代码
2014/01/24 Javascript
根据配置文件加载js依赖模块
2014/12/29 Javascript
jquery实现点击label的同时触发文本框点击事件的方法
2015/06/05 Javascript
JS获取下拉框显示值和判断单选按钮的方法
2015/07/09 Javascript
AngularJS教程 ng-style 指令简单示例
2016/08/03 Javascript
利用JavaScript判断浏览器类型及版本
2016/08/23 Javascript
详解Vue监听数据变化原理
2017/03/08 Javascript
JavaScript for循环 if判断语句(学习笔记)
2017/10/11 Javascript
微信小程序基于slider组件动态修改标签透明度的方法示例
2017/12/04 Javascript
vue控制多行文字展开收起的实现示例
2019/10/11 Javascript
[02:40]DOTA2英雄基础教程 巨牙海民
2013/12/23 DOTA
[01:04:49]KG vs LGD 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
Pycharm技巧之代码跳转该如何回退
2017/07/16 Python
python读取和保存视频文件
2018/04/16 Python
Python爬虫实现简单的爬取有道翻译功能示例
2018/07/13 Python
python将.ppm格式图片转换成.jpg格式文件的方法
2018/10/27 Python
python读取并定位excel数据坐标系详解
2019/06/26 Python
Python线程条件变量Condition原理解析
2020/01/20 Python
Python自动巡检H3C交换机实现过程解析
2020/08/14 Python
python自动化发送邮件实例讲解
2021/01/04 Python
手摸手教你用canvas实现给图片添加平铺水印的实现
2019/08/20 HTML / CSS
小区文明倡议书
2014/05/16 职场文书
教师演讲稿开场白
2014/08/25 职场文书
教师竞聘上岗演讲稿
2014/09/03 职场文书
中韩经贸翻译专业大学生职业生涯规划范文
2014/09/18 职场文书
2015年大学生暑期实习报告
2015/07/13 职场文书
Jupyter notebook 输出部分显示不全的解决方案
2021/04/24 Python
go语言中http超时引发的事故解决
2021/06/02 Golang