JavaScript实现简易的天数计算器实例【附demo源码下载】

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

运行效果图如下:

功能

1. 支持选择日期; 2. 自动计算闰年; 3. 支持使用当前日期。

代码

(1)html文件

rush:xhtml;"> <Meta charset="UTF-8"> 简易天数计算器

(2)外部js文件

rush:js;"> /** * dayCounter. * Created by Jack on 16-11-29. */ /** * 通过元素的id获取Element. * @param arr id数组. */ function getElements(arr) { var elements = []; for (var i = 0; i < arr.length; i++) { elements.push(document.getElementById(arr[i])); } return elements; } //初始化年月日 function initView(arr) { var elements = getElements(arr); //年 for (var i = 2048; i >= 1949; i--) { var option = document.createElement("option"); option.setAttribute("value","" + i); option.appendChild(document.createTextNode("" + i)); //认选中2017年 if (i == 2017) { option.setAttribute("selected","selected") } elements[0].appendChild(option); } //月 for (var a = 1; a <= 12; a++) { var optionM = document.createElement("option"); optionM.setAttribute("value","" + a); optionM.appendChild(document.createTextNode((a < 10 ? "0" : "") + a)); elements[1].appendChild(optionM); } //日 initDay(elements[2],31,1); } function initDay(day,dayCount,selectedValue) { for (var i = 1; i <= dayCount; i++) { var optionD = document.createElement("option"); optionD.setAttribute("value","" + i); if (i == selectedValue) { optionD.setAttribute("selected","selected"); } optionD.appendChild(document.createTextNode((i < 10 ? "0" : "") + i)); day.appendChild(optionD); } } //当年和月发生变化时,更新日 function updateDaySelect(arr) { var elements = getElements(arr); //选中年 var y = elements[0].options[elements[0].selectedIndex].value; //选中月 var m = elements[1].options[elements[1].selectedIndex].value; if (m == 1 || m == 3 || m == 5 || m == 7 || m == 8 || m == 10 || m == 12) { setupDay(elements[2],31); } else if (m == 4 || m == 6 || m == 9 || m == 11) { setupDay(elements[2],30); } else { //判断是否为闰年 if ((y % 4 == 0 && y % 100 != 0 ) || y % 400 == 0) { setupDay(elements[2],29); } else { setupDay(elements[2],28); } } } //更新 日 select元素 function setupDay(day,dayCount) { //判断是否需要刷新 if (day.options.length == dayCount) { //无需刷新 return; } //原来选中的 日 var oldValue = day.options[day.selectedIndex].value; if (oldValue > dayCount) { oldValue = dayCount; } //首先移除所有子元素 for (var i = day.childNodes.length - 1; i >= 0; i--) { day.removeChild(day.childNodes.item(i)) } //添加元素 initDay(day,oldValue); } function getSelectedText(ele) { return ele.options[ele.selectedindex].text; } function getDateStr(arr) { var elements = getElements(arr); return getSelectedText(elements[0]) + "/" + getSelectedText(elements[1]) + "/" + getSelectedText(elements[2]); } /** * 计算天数,日期格式为 2016/08/09 * @param startDay 开始日期 * @param endDay 结束日期 */ function calDayCount(startDay,endDay) { var s = new Date(startDay + " 00:00:00").getTime(); var e = new Date(endDay + " 00:00:00").getTime(); return (e - s) / 86400000; } function getTodayYMD() { var date = new Date(); return [date.getFullYear(),date.getMonth(),date.getDate()]; }

完整demo实例代码点击此处本站下载

PS:这里再为大家推荐几款比较实用的天数计算在线工具供大家使用:

在线日期/天数计算器:

在线日期计算器/相差天数计算器:

在线日期天数差计算器:

在线天数计算器:

更多关于JavaScript相关内容感兴趣的读者可查看本站专题:《》、《》、《》、《》、《》及《

希望本文所述对大家JavaScript程序设计有所帮助。

相关文章

前言 做过web项目开发的人对layer弹层组件肯定不陌生,作为l...
前言 前端表单校验是过滤无效数据、假数据、有毒数据的第一步...
前言 图片上传是web项目常见的需求,我基于之前的博客的代码...
前言 导出Excel文件这个功能,通常都是在后端实现返回前端一...
前言 众所周知,js是单线程的,从上往下,从左往右依次执行,...
前言 项目开发中,我们可能会碰到这样的需求:select标签,禁...