2018-09-06 封装几个与时间计算有关的函数(JS版,持续更新)

1.在写一个课表软件的时候,需要在表头处显示这周一至周五的日期,以下是JS代码:


let time = {}

//根据当前时间计算本周一至五的日期对象

time.getFiveDays = function() {

let currentDate = new Date();

let timesStamp = currentDate.getTime();

let currenDay = currentDate.getDay();

let dates = [];

for(let i = 0; i < 5; i++) {

let tempDate = new Date(timesStamp + 24 * 60 * 60 * 1000 * (i - (currenDay + 6) % 7));

dates.push(tempDate);

}

return dates;

}


2.传入一个日期(YYYY-MM-DD),计算与今天之间相差的天数.(可修改成任意两天之间的天数)


//两个时间相差天数 sDate1 2006-12-18格式

time.datedifference = function(sDate1) {

let dateSpan,

tempDate,

iDays, sDate2;

sDate1 = Date.parse(sDate1);

sDate2 = new Date();

dateSpan = sDate2 - sDate1;//相差毫秒数

dateSpan = Math.abs(dateSpan);//取绝对值

iDays = Math.ceil(dateSpan / (24 * 3600 * 1000));//转化为天数

// console.log(iDays + "天数");

return iDays

};


3.将一个将"yyyy-mm-dd HH:MM:ss"格式的时间 转化为 几小时前,几天前。(改编于mui)

首先将符合格式的字符串转化为Date对象

        let a = str.split(/[^0-9]/); //以非数字为分割点,分割为数组

        let date = new Date(a[0], a[1] - 1, a[2], a[3], a[4], a[5]); //传入 年 月 日 时 分 秒等参数,构造Date对象

然后定义一个对象保存年,月,日等的毫秒数

        let UNITS = {

        '年': 31557600000,

        '月': 2629800000,

        '天': 86400000,

        '小时': 3600000,

        '分钟': 60000,

        '秒': 1000

        };

用格式化的时间与当前时间相减,用结果与对象的元素进行比较,输出XX前。

for (let unit in UNITS) {

        if (diff >= UNITS[unit]) {

        resultStr = Math.floor(diff / UNITS[unit]) + unit + '前';

        break;

    }

}

return resultStr || '刚刚';

完整代码如图:


你可能感兴趣的:(2018-09-06 封装几个与时间计算有关的函数(JS版,持续更新))