获取当前时间往前的日期

前几天做OEM的需求,需要获取当前时间往前 10 个小时、 10 天、10 周、 10月。方法如下:

// 格式化时间
/*
* date: 日期对象
* type: 格式化类型。参数有4种 'hour': 2018-03-07 19:00;  'day': 2018-03-07;  'week': 03-05 至 03-11;  'month': 2018-03
*/
function formattingDate(date, type) {
    let year = date.getFullYear(),
        month = (date.getMonth() + 1) < 10 ? '0' + (date.getMonth() + 1) : (date.getMonth() + 1),
        day = date.getDate() < 10 ? '0' + date.getDate() : date.getDate(),
        hour = date.getHours() < 10 ? '0' + date.getHours() : date.getHours();
    
    if (!type || type === 'day') { // 默认显示年、月、日
        return year + "-" + month + "-" + day;
    } else if (type === 'hour') {
        return year + "-" + month + "-" + day + " " + hour + ":00";
    } else if (typ === 'week') {
        return month + "-" + day;
    } else if (type === 'month') {
        return year + "-" + month;
    }
}
复制代码

1、获取当前时间往前 10 个小时

    function getTenHour () {
        let nowDateTime = new Date().getTime(),
            noeHourTime = 60 * 60 * 1000,
            hourArr = [];
        for (var i = 0; i < 10; i++) {
            let itemHourTime = nowDateTime - i * noeHourTime,
                itemHour = formattingDate(new Date(itemHourTime), 'hour');
            hourArr.push(itemHour);
        }
        return hourArr;
    }
复制代码

2、获取当前时间往前 10 天

    function getTenDay () {
        let nowDateTime = new Date().getTime();
            noeDayTime = 24 * 60 * 60 * 1000,
            dayArr = [];
        for (var i = 0; i < 10; i++) {
            let itemDayTime = nowDateTime - i * noeDayTime,
                itemDay = formattingDate(new Date(itemDayTime), 'day');
            dayArr.push(itemDay);
        }
        return dayArr;
    }
复制代码

上面还是挺简单的,就是用当前的毫秒数减去单位毫秒,然后初始化一个日期对象就好了。但是获取周、月就麻烦了

3、获取当前时间往前 10 周

    function getTenWeek () {
        let nowDate = new Date(),
            nowDateTime = nowDate.getTime(),
            noeDayTime = 24 * 60 * 60 * 1000,
            nowDay = nowDate.getDay() === 0 ? 7 : nowDate.getDay(), // 获取当前周几。注意:周日的值为 0 ;
            nowMondayTime = nowDateTime - (nowDay - 1) * noeDayTime, // 获取当前所在周的周一
            weekArr = [];  
        for (var i = 0; i < 10; i++) {
            let itemMondayTime = nowMondayTime - i * 7 * noeDayTime, // 每个周一的毫秒数
                itemMonday = formattingDate(new Date(itemMondayTime), 'week'),
                itemWeekdayTime = nowMondayTime + i * 6 * noeDayTime, // 每个周日的毫秒数
                itemWeekDay = formattingDate(new Date(itemWeekdayTime), 'week');
            weekArr.push(itemMonday + ' 至 ' + itemWeekDay);
        }
        return weekArr;
    }
复制代码

4、获取当前时间往前 10 月

    function getTenMonth () {
        let nowDate = new Date(),
            year = nowDate.getFullYear(),
            month = nowDate.getMonth(),
            nowMonthOneDay = new Date(year, month, 1), // 当前月的第一天
            tempTime = nowMonthOneDay.getTime(),
            oneDayTime = 24 * 60 * 60 * 1000,
            monthArr = [];
        for (var i = 0; i < 10; i++) {
            let nowMonth = formattingDate(new Date(tempTime),'month'), // 当前月
                prevMonthDate = new Date(tempTime - oneDayTime), // 上一个月的最后一天
                prevYear = prevMonthDate.getFullYear(),
                prevMonth = prevMonthDate.getMonth(),
                prevMonthOneDay = new Date(prevYear, prevMonth, 1); // 上一个月的第一天
            tempTime = prevMonthOneDay.getTime();
            monthArr.push()
        }
        return monthArr;
    }
复制代码

转载于:https://juejin.im/post/5a9fc5ca5188255565340a67

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值