粗糙的演示:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>计算年龄</title>
</head><body>
出生日期:<input id = "birthDay"><br>
年龄:<input id = "age "><br>
<button onclick=" getBirDay()">计算</button><script type="text/javascript">
var getAgeFromBirthday = function(birthday){
var yearBorn = birthday.getFullYear();
var monthBorn = birthday.getMonth();
var dayBorn = birthday.getDate();
var nowDate = new Date();
var year = nowDate.getFullYear();
var month = nowDate.getMonth();
var day = nowDate.getDate();
var hour = nowDate.getHours();
//间隔的年、月、日
var yL = year - yearBorn;
var mL = month - monthBorn;
var dL = day - dayBorn;
//统一的,计算间隔了XX年XX月XX天的方法。对日、月需要考虑借位的问题,年间隔一定>=0,所以不用考虑。这样一共有4种可能
if(dL<0){dL = dL +getMonthDays(monthBorn+1 , yearBorn);//日不够减,向月借位。借哪个月的天数这里有点绕,看图解mL = mL-1;if(mL<0){mL = mL + 12;//月向年借位yL = yL - 1;}
}else{if(mL<0){mL = mL + 12;//月向年借位yL = yL - 1;}
}//显示
let yStr = "";
let mStr = "";
let dStr = "";
let hStr = "";
if(yL>0){yStr = yL+"年";
}
if(mL>0){mStr = mL+"月";
}
if(dL>0){dStr = dL+"日";
}
if(yL==0&&mL==0&&dL==0){hStr = hour+'小时';
}
if(yL<0 || (yL == 0 && mL <0) || (yL == 0 && mL == 0 && dL < 0)){return "这是未来的日期!";
}
return yStr + mStr + dStr +hStr;
};//计算月的天数的函数
//31天的月: 1,3,5,7,8,10,12:2月较特殊:平年28天,闰年(被4整除)29天;30天的月:其余所有月
let getMonthDays = function(month , year){
let mDays;
if(month == 1 || month == 3||month == 5||month == 7||month == 8||month == 10||month == 12){mDays = 31;
}else if(month == 2){if(year%4 == 0){mDays = 29;}else{mDays = 28;}
}else{mDays = 30 ;}
return mDays
};function getBirDay() {
let birthDayStr = document.getElementById( "birthDay" ).value;
let birthDayArray = birthDayStr.split('-');
let birthDay = new Date(birthDayArray[0],birthDayArray[1]-1,birthDayArray[2]);//由于JS中月份的底层是数组,需要真实的月份-1构造出来的日期才是正确的
document.getElementById( "age ").value = getAgeFromBirthday(birthDay);
}</script></body></html>

日向月借位的图解:(以计算2019.5.2 到2020.2.1的时间间隔为例)

有待改进之处欢迎交流讨论!

JS 计算年龄为几岁几月几天相关推荐

  1. 用HTML5+js 计算年龄

    用HTML5+js 计算年龄 HTML5代码如下: <!DOCTYPE html> <html lang="en"><head><meta ...

  2. Js年龄计算,精确到岁、月、小时

    公司做医疗,需要根据时间获取精确年龄(主要是儿童年龄),精确度要求较高,从网上找了好久都不符合要 求,或者只是精确到岁,或者跨月时,天数误差过大,没办法只好自己写了一分,请大家指点需求:1 如果大于等 ...

  3. Excel计算年龄(足岁)问题:Excel中datedif和VBA中的datediff函数介绍

    1.Excel中的datedif函数 之前我通过身份证计算年龄时,都是取第7到10位,用当年的年份去减,得到一个年龄,这样不准确.后来,发现了datedif函数,注意,只有一个f. 函数语法: DAT ...

  4. 根据出生日期计算宝宝的年龄,几岁几个月几天!

    项目需要网上找了几个工具类计算都不准确!最后发现使用Calendar计算很方便. public static String getAge(String date) {String[] data = d ...

  5. Java根据日期计算年龄——精确到天

    最近遇到一个需求,根据孩子的出生日期,计算出孩子当前多大,要求精确到天,如"2岁8个月6天".这里做一下记录,以防以后用到. 以下是博主从简书搜到的一篇代码,奈何找不到原链接了~~ ...

  6. JS 根据出生日期计算岁、月、天;根据岁、月、天计算出生日期。

    效果视频: JS 根据出生日期计算岁.月.天:根据岁.月.天计算出生日期 表单代码: <a-col :span="12"><a-form-model-item l ...

  7. android出生日期计算年龄,Java 通过生日计算宝宝多大了,输出我27岁7月零9天

    通过生日计算宝宝多大了 前段时间大家在打新冠状疫苗的时候,护士给了我一张小纸条,上面清晰的显示我在地球上的年龄27岁4个月零3天.我们也写个代码走起 import java.text.ParseExc ...

  8. Oracle-根据生日计算年龄(岁,月,天)

    需求:根据生日date_of_birth计算当前年龄,大于16岁显示岁,1–16岁精确到月,一岁以下精确到天 例子:1995-5-5 =25岁 2010-5-5 = 10岁8月 2020-5-5 = ...

  9. js生日计算年龄_用T-SQL计算明细年龄问题.

    提前说一下,有一个bug,就是出生日期等于getdate()的时候,由于没有精确到时分秒,而无法计算年龄. 过几天补上. /*计算明细年龄问题*/DECLARE @ADATE DATETIME, @B ...

最新文章

  1. 语言转4字节数据整型_R语言与RGui平台_数据类型_向量_4
  2. 软件测试之Selenium IDE
  3. 如何展示富文本_自助建站如何做出个性化效果?
  4. iOS开发简单高效的数据存储
  5. 双盘转子动力学仿真c语言程序,递归牛顿欧拉(正)动力学仿真
  6. web前端开发---弃Hbuilder编辑器到Atom插件推荐,快捷键,快速编辑html 使用
  7. python彩票预测与分析_130期祥子大乐透预测奖号:后区大小分析
  8. Hbase roekey设计入门
  9. Obj-C 实现设计模式 -- Adapter
  10. vue 项目中引入字体文件的正确方式~
  11. 【数学建模】历年数学建模国赛评价类题目汇总
  12. VMI的两种库存管理模式
  13. 神经网络 语音识别,神经网络语音合成
  14. shiro+jwt登录认证anon配置无效
  15. Spoken English
  16. 神策优质客户西瓜创客融资 1.5 亿,“AI+ 大数据”构造少儿编程新格局
  17. mysql主从复制-介绍
  18. 清华大学胡事民是计算机视觉,清华团队将Transformer用到3D点云分割上后,效果好极了丨开源...
  19. 2019年昆明理工大学计算机设计大赛,昆明理工大学计算中心网站
  20. Numpy 100道练习题+常用知识点

热门文章

  1. 使用WebSocket实现聊天室
  2. 微信api调用限制,45009 reach max api daily quota limit 解决方法
  3. 发表论文查重率是多少?
  4. 购买人脸识别体温检测系统的必要性
  5. 阿里云服务器ECS的用途有哪些?
  6. 不看好Twitter广告模式
  7. 真的输了,五笔输入法败给拼音,它输给了时代
  8. linux的centos7怎么分区,CentOS linux7 磁盘分区
  9. 《孙子略解》曹操注-2011
  10. 这100道练习,带你玩转Numpy