如何计算俩日期相隔多少年,多少月,多少天或者两时间相差XX年XX月XX日
假设时开始时间为2015年4月2日,结束时间为2019年4月4月;
需要先熟悉一下时间对象得一些方法,可参考教程http://www.w3school.com.cn/jsref/jsref_obj_date.asp;
需要将上述时间转换为时间对象,通过new Date()实现;
let startDate = new Date(2015,3,2); 2015/4/2
let endDate = new Date(2019,3,4); 2019/4/4
//得出两时间的年
let startYear = startDate.getFullYear() ; 2015
let endYear = endDate.getFulllYear(); 2019
一、计算出时间相隔多少月
相差月 = 结束时间总月数 - 开始时间得总月数
总月数 = XXXX年 * 12 + 当前多少月;
2015年4月2日总月数 let startMonths = startYear * 12 + startDate.getMonth() + 1 = 24184;
2019年4月4日总月数 let endMonths = endYear * 12 + endDate.getMonth() + 1 = 24232;
let intervalMonths = endMonths - startMonths = 24232 - 24184 = 48个月;
算出相差月数,则还存在时间天差,则:
let gapDays = endDate.getDate() - startDate.getDate() = 4 - 2 = 2天;
则最后结果为: 相差48个月零3天;
二、计算俩时间相隔多少年
相差年 = Math.floor((相差总月数 / 12))+ 相差总月数 % 12;
let intervalYears = Math.floor(48 / 4) + (48 %12)= 4;
相差4年
三、计算出两时间相差多少天;
相差得天数 = 2019年4月4日的总天数 - 2015年4月2日的总天数 ;
总天数 = 当前时间绝对毫秒数 / 天总毫秒数 天总毫秒数 = 24 * 60 * 60 * 1000 = 86400000
let startDays = startDate.getTime() / 86400000;
let endDays = endDate.getTime() / 86400000;
let intervalDays = endDays - startDays = 17989 - 16526 = 1463;
则相差1463天;
四、计算两时间相差XX年XX月XX天
相差得年月 = Math.floor(48 / 12) + 48 % 12 = 4年0月;
相差得天数 = endDate.getDate() - startDate.getDate() = 4 - 2 = 2天;
则相差4年零2天。