本文实例为大家分享了Javascript实现简易天数计算器的具体代码,供大家参考,具体内容如下

效果图:

功能:

1. 支持选择日期;

2. 自动计算闰年;

3. 支持使用当前日期。

代码:

(1)html文件:

简易天数计算器

开始日期

使用当前日期

结束日期

使用当前日期

计算天数

/**

* 根据年和月更新日列表.

* @param flag 1-开始日期 2-结束日期

*/

function update(flag) {

if (flag == 1) {

updateDaySelect(['year', 'month', 'day']);

} else {

updateDaySelect(['year2', 'month2', 'day2']);

}

}

//计算天数

function calDays(id) {

var s = getDateStr(['year', 'month', 'day']);

var e = getDateStr(['year2', 'month2', 'day2']);

document.getElementById(id).innerHTML = calDayCount(s, e);

}

//使用当前日期作为开始日期

function useTodayAsStart() {

var checked = document.getElementById('startCb').checked;

useToday(1, checked);

}

//使用当前日期作为结束日期

function useTodayAsEnd() {

var checked = document.getElementById('endCb').checked;

useToday(2, checked);

}

/**

* 使用当前日期。

* @param flag 1-开始日期 2-结束日期

* @param checked true-使用当前时期 false-取消使用当前日期

*/

function useToday(flag, checked) {

var elements;

if (flag == 1) {

elements = getElements(['year', 'month', 'day']);

} else {

elements = getElements(['year2', 'month2', 'day2']);

}

if (checked) {

//使用当前日期

var ymd = getTodayYMD();

var a;

//设置年

var yEle = elements[0];

for (a = 0; a < yEle.options.length; a++) {

if (yEle.options[a].value == ymd[0]) {

yEle.options[a].selected = "selected";

break;

}

}

//设置月

var mEle = elements[1];

for (a = 0; a < mEle.options.length; a++) {

if (mEle.options[a].value == ymd[1] + 1) {

mEle.options[a].selected = "selected";

break;

}

}

//根据年和月更新日列表

update(flag);

//设置日

var dEle = elements[2];

for (a = 0; a < dEle.options.length; a++) {

if (dEle.options[a].value == ymd[2]) {

dEle.options[a].selected = "selected";

break;

}

}

}

for (var i = 0; i < elements.length; i++) {

elements[i].disabled = checked ? "disabled" : undefined;

}

}

(2)外部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));

//默认选中2016年

if (i == 2016) {

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, dayCount, 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()];

}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

html计算天数,Javascript实现简易天数计算器相关推荐

  1. html中加法计算器的代码,JavaScript实现简易加法计算器

    本文实例为大家分享了JavaScript实现加法计算器的具体代码,供大家参考,具体内容如下 具体要求: 1.页面布局: 2.还需要在点击计算按钮之后在页面上显示计算结果 具体实现: 计算器 funct ...

  2. js平方计算器与猜数字游戏,计算从出生至今的天数

    平方计算器: <html><head><meta charset="utf-8"><title></title>< ...

  3. 计算请假天数JavaScript方法

    计算请假天数JavaScript方法 前言 最近,有这么个需求,给用户做个请假审批系统,要输入请假开始时间和结束时间,同时计算出请假天数,如果年假数量不够提示不能提交,如果年假数量够的话,就走审批工作 ...

  4. JavaScript计算两个日期相差天数/分钟/小时

    /*** 日期相减获取天数(用于公式计算)* @param date1 日期一 例如:"{'value':'2020-06-05','date_format':'yyyy-MM-dd'}&q ...

  5. python判断天数_Python计算两个日期相差天数的方法示例

    本文实例讲述了Python计算两个日期相差天数的方法.分享给大家供大家参考,具体如下: #!/usr/bin/python import time import sys def dateinput() ...

  6. [JavaScript学习记录] 首次运用于网页,做一个简易利息计算器!!!

    目录 事件 错误处理 1.隐藏/显示文字 2.简单的加法计算器 效果: ★★★3.简易利息计算器 效果: ​​​​​​​ 事件 javascript允许html与用户交互的行为 例如:鼠标点击事件 & ...

  7. java如何计算时间天数差,java计算两个时间相差天数的方法汇总

    问题描述: 输入:两个日期 输出:两个日期相差的天数 具体代码实现 方法1: 通过calendar类的日期比较.注意:这里需要考虑一下: 日期是跨年份的,如一个是2012年,一个是2015年的 年份是 ...

  8. 计算两个日期间隔天数(距离(2024-7-7)间隔:1999天)

    /*** 计算两个日期间隔天数*/ public class Demo5 {public static void main(String[] args) {//开始时间LocalDateTime st ...

  9. 根据输入的出生日期计算到今天之间的天数

    import java.time.LocalDate; import java.time.Period; import java.time.format.DateTimeFormatter; impo ...

最新文章

  1. weekly paper read
  2. 如何保护数据中心免受电子腐蚀和突然故障的威胁?
  3. Java秒杀系统优化的工程要点
  4. Java volatile关键字原理解剖
  5. C++一级与二级指针基础详解
  6. 你了解HTTPS工作原理吗?
  7. HDU 3488 KM
  8. java多功能钟_Java 11将包含更多功能
  9. 【算法】学习笔记(5):快速排序
  10. 在我还是14岁的时候那会学C++
  11. 循序渐进:Oracle 12c新特性Sharding技术解读
  12. 如何构建你的聊天界面
  13. vue使用el组件 在el-tabs中 刷新页面保持不变
  14. 模板使用自定义类型_自定义虚幻图表_拓展蓝图功能
  15. OCP考点实战演练02-日常维护篇
  16. Javascript:利用JS在空白网页中绘制简单图形
  17. entity framework 调用 oracle 序列_Weblogic T3 反序列化漏洞(CVE20192890 )分析
  18. 2021年长安杯电子数据取证比赛复盘完整版(wp)
  19. HIVE 数据仓库容量清理
  20. 笔记本电脑建立Wifi热点多种方法

热门文章

  1. B4.Java web部分
  2. 在Windows 10上安装TensorFlow 2.2.0 RC4版
  3. 【BZOJ1009】【codevs2325】GT考试,kmp+矩阵加速DP
  4. 【英语学习】【Level 07】U05 Best Destination L2 The City of Lights
  5. 【英语学习】【WOTD】countermand 释义/词源/示例
  6. CCS 3.3中统计程序运行的时间
  7. mie散射理论方程_Mie氏散射理论的实验研究
  8. tensorflow2.0 图像处理项目_游戏爱好者应该看看这个开源项目
  9. xp系统mysql安装教程视频教程_Windows XP操作系统下的MYSQL安装过程_PHP教程
  10. iPad Air/Air2/iPhone6 Plus跑分对比