var DateUtils = { /** * 扩展Date 对象格式化方法 */ expandDate : function() { Date.prototype.format = function(fmt) { //author: meizz var o = { "M+" : this.getMonth()+1, //月份 "d+" : this.getDate(), //日 "h+" : this.getHours()%12 == 0 ? 12 : this.getHours()%12, //小时 "H+" : this.getHours(), //小时 "m+" : this.getMinutes(), //分 "s+" : this.getSeconds(), //秒 "q+" : Math.floor((this.getMonth()+3)/3), //季度 "S" : this.getMilliseconds() //毫秒 }; if(/(y+)/.test(fmt)) fmt=fmt.replace(RegExp.$1, (this.getFullYear()+"").substr(4 - RegExp.$1.length)); for(var k in o) if(new RegExp("("+ k +")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length==1) ? (o[k]) : (("00"+ o[k]).substr((""+ o[k]).length))); return fmt; } }, /** * 获取具体年龄 * @param {} beginStr * @param {} endStr * @return {} */ getAgeInfo: function (beginStr, endStr) { var reg = new RegExp(/^(\d{1,4})(-|\/)(\d{1,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[5] - beginArr[5]; 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 如果岁 大于等于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[5], beginArr[7], beginArr[9], beginArr[11]); var endDate = new Date(endArr[1], endArr[3] - 1, endArr[5], endArr[7], endArr[9], endArr[11]); 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; }, /** * 获取年龄,不满一天算天 * @param {} birthday * @param {} today * @return {} */ getAge :function(birthday,today) { var reg = new RegExp(/^(\d{1,4})(-|\/)(\d{1,2})(-|\/)(\d{1,2})$/); var beginArr = birthday.match(reg); var endArr = today.match(reg); var days = 0; var month = 0; var year = 0; days = endArr[5] - beginArr[5]; 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天"; /* * 1 如果岁 大于等于1 那么年龄取 几岁 2 如果 岁等于0 但是月大于1 name取几月 3 如果不足月, 则取天数 4 不满一天算一天 */ var result = ""; if (year >= 1) { result = yearString + mnthString + dayString; } else { if (month >= 1) { result = days > 0 ? mnthString + dayString : mnthString; } else { result = dayString; } } return result; }, /** * 获取月龄 * @param {} birthday * @param {} today * @return {} */ getMonthage :function(birthday,today) { var reg = new RegExp(/^(\d{1,4})(-|\/)(\d{1,2})(-|\/)(\d{1,2})$/); var beginArr = birthday.match(reg); var endArr = today.match(reg); var days = 0; var month = 0; var year = 0; days = endArr[5] - beginArr[5]; 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 result = ""; if (year >= 1) { result = (year * 12 + month + 1) + "个月"; } else { if (month >= 1) { result = (month + 1) + "个月"; } else { result = "1个月"; } } return result; } }