项目中需要做一个倒计时的功能,可以根据选择的日期,算出距离今天的时间差。倒计时有多种模板,大致分为年月日、年月日时分秒以及单独的日。一开始也是在网上大致找了几种方法,但要么和项目要求不匹配,要么计算结果不准确,就自己写一个吧,本文记录分享一下。
实现
计算条件
年和月的差值计算是比较日期。举个例子:比如从2月1号0时0分0秒到3月1号0时0分0秒计为相差1个月,不管当年是闰年还是非闰年,即不管2月实际有多少天。不满1个月(计算时分秒)算0个月。年份同理。
两种方法
引用moment.js库实现
moment.js是时间处理常用的js库,这里使用了它的diff和subtract方法,大大简化了工作量。通过和原生方法对比就可看出。
/**
* 基于moment.js 实现的倒计时计算
* @param endTime {String,Date} - 倒计时结束时间
* @param maxUnit {String} - [maxUnit = "year"] 最大单位
* @param startTime {String,Date} - 倒计时开始时间,默认为当前时刻
* @return {Object} - 计算完成后返回的年月日时分秒数值
*/
function countDownTime(endTime, maxUnit = "year", startTime) {
let aUnitArr = ["year", "month", "day", "hour", "minute", "second"]
let iMaxIndex