Js年龄计算,精确到岁、月、小时
2016-01-27 01:13
447 查看
公司做医疗,需要根据时间获取精确年龄(主要是儿童年龄),精确度要求较高,从网上找了好久都不符合要 求,或者只是精确到岁,或者跨月时,天数误差过大,没办法只好自己写了一分,请大家指点 需求: 1 如果大于等于1岁,那么岁 例如格式"N岁N月" 如果整年,月数为0,格式为“N岁” 2 如果小于一岁, 但大于一月,就取几月 例如格式"N月N天",如果整月,天数为0,格式为“N月” 3 如果小于一个月,天大于等 于3天 直接取天数 如果天小于3天 取小时 例如出生2天 就取 48小时
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <script language="javascript"> function getAge(beginStr, endStr) { var reg = new RegExp( /^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})(\s)(\d{1,2})(:)(\d{1,2})(:{0,1})(\d{0,2})$/); var beginArr = beginStr.match(reg); var endArr = endStr.match(reg); var days = 0; var month = 0; var year = 0; days = endArr[4] - beginArr[4]; if (days < 0) { month = -1; days = 30 + days; } month = month + (endArr[3] - beginArr[3]); if (month < 0) { year = -1; month = 12 + month; } year = year + (endArr[1] - beginArr[1]); var yearString = year > 0 ? year + "岁" : ""; var mnthString = month > 0 ? month + "月" : ""; var dayString = days > 0 ? days + "天" : ""; /* * 1 4000 如果岁 大于等于1 那么年龄取 几岁 2 如果 岁等于0 但是月大于1 那么如果天等于0 天小于3天 取小时 * 例如出生2天 就取 48小时 */ var result = ""; if (year >= 1) { result = yearString + mnthString; } else { if (month >= 1) { result = days > 0 ? mnthString + dayString : mnthString; } else { var begDate = new Date(beginArr[1], beginArr[3] - 1, beginArr[4], beginArr[6], beginArr[8], beginArr[10]); var endDate = new Date(endArr[1], endArr[3] - 1, endArr[4], endArr[6], endArr[8], endArr[10]); var between = (endDate.getTime() - begDate.getTime()) / 1000; days = Math.floor(between / (24 * 3600)); var hours = Math.floor(between / 3600 - (days * 24)); var dayString = days > 0 ? days + "天" : ""; result = days >= 3 ? dayString : days * 24 + hours + "小时"; } } return result; } alert(getAge("1980-03-22 10:1:2", "1982-03-22 10:1:2")); alert(getAge("1980-02-29 10:1:2", "1981-03-01 10:12:2")); alert(getAge("1980-03-22 10:1:2", "1980-03-23 9:1:1")); alert(getAge("1981-02-28 10:1:2", "1981-03-01 10:1:2")); </script> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>无标题文档</title> </head> <body> </body> </html>
相关文章推荐
- js正则表达式lastIndex
- js正则表达式语法
- 重读js高程笔记二
- JavaScript+html5 canvas绘制的小人效果
- js实现简单排列组合的方法
- 基于JavaScript实现瀑布流效果(循环渐近)
- JavaScript下的时间格式处理函数Date.prototype.format
- js实现的彩色方块飞舞奇幻效果
- javascript中的3种继承实现方法
- js实现的鼠标滚轮滚动切换页面效果(类似360默认页面滚动切换效果)
- 理解javascript异步编程
- 简单介绍jsonp 使用小结
- 再谈JavaScript异步编程
- 用window.onerror捕获并上报Js错误的方法
- 封装属于自己的JS组件
- 不用一句js代码初始化组件
- APP中javascript+css3实现下拉刷新效果
- js正则表达式
- EL表达式
- JavaScript多继承的实现