【前端】报表常用的前一月、后一月、前一周、后一周。相应js以及展示页面

一、报表常用的前一月、后一月、前一周、后一周。

点前一月能跳转到前一个月,再点后一个月能显示本月(1号凌晨到今天23:59:59),再点后一个月能提示已是最新月份,并且时间不变。

点前一周能跳转到前一周,再点后一周能显示本周(周一到今天23:59:59),再点后一周能提示已是最新周,并且时间不变。

功能可以实现,代码有点冗余,不过删删减减还可以优化一下。

可以点击这里下载html展示页面和相应的js文件

展示页面如下:

二、没积分下载的,具体用到的时间处理的工具js,可以从这里拷贝。

相应的时间处理函数

(1)判断查询日期是否大于今天

function isAfterToday(str) {
    //当天凌晨
    var timeStamp = new Date(new Date().setHours(0, 0, 0, 0));
    //一天是86400秒   故n天前的时间戳为
    var tomorrow = timeStamp.getTime()+ 86400000;
    console.log("tomorrow:"+tomorrow);
    return new Date(str).getTime()-tomorrow>= 0;
}

(2)判断查询日期是否大于今天

function isThisMonth(str) {
    var year=new Date(str).getFullYear()-new Date().getFullYear()=== 0;
    var month=new Date(str).getMonth()-new Date().getMonth()=== 0;
    return year&&month;
}

(3)判断查询日期是否在当前周

function isThisWeek(str) {
    var now=new Date();
    var week = now.getDay(); //获取时间的星期数
    var minus = week ? week - 1 : 6;
    now.setDate(now.getDate() - minus); //获取minus天前的日期
    var monday=now;
    var year=monday.getFullYear();
    var month=change(monday.getMonth()+1);
    var day=change(monday.getDate());
    var today=year + "-" + month + "-" + day;
    var compareStr=GetMonday(str);
    console.log("today:"+today);
    console.log("compareStr:"+compareStr);
    return today===compareStr;
}

(4)获取到每月的第一天和最后一天

function getMonthFirstOrLaseDay(date,afterOrBefore){
    var month=date.getMonth()+1;  //当前月份,1-12
    var year = date.getFullYear();
    if(afterOrBefore==="before"){
        month=month-1;//前一个月份,12月时为-1,1月时为0
        if(month===0) {
            month=12;
            year=year-1;
        }
    }
    if(afterOrBefore==="after"){
        month=month+1;//后一个月份,12月时为1,1月时为0
        if(month===13){
            month=1;
            year=year+1;
        }

    }
    if (month < 10) {
        month = "0" + month;
    }
    var firstDay = year+'-' + month+'-' + "01"+" "+"00:00:00";
    var myDate = new Date(year, month, 0);
    var lastDay = year+'-' + month+'-' +  myDate.getDate()+" "+"23:59:59";
    console.log("firstDay:"+firstDay+",lastDay:"+lastDay);
    return {firstDay:firstDay,lastDay:lastDay}
}

(5)获取周一 

function GetMonday(ddReceive) {
    var dd=new Date(ddReceive);
    var week = dd.getDay(); //获取时间的星期数
    var minus = week ? week - 1 : 6;
    dd.setDate(dd.getDate() - minus); //获取minus天前的日期
    var y = dd.getFullYear();
    var m = dd.getMonth() + 1; //获取月份
    if (m < 10) {
        m = "0" + m;
    }
    var d = dd.getDate();
    if (d < 10) {
        d = "0" + d;
    }
    console.log("monday:"+y + "-" + m + "-" + d);
    return y + "-" + m + "-" + d;
}

(6)根据某一时间节点获取指定时间差时

/**
 * 根据某一时间节点获取指定时间差时间(年月日时分秒)(目前add的有bug,只支持默认,想算add操作可以将val设置为负数)
 * @param op 操作:add-表示在指定时间上加;其余情况为减
 * @param lev 指定操作目标:yy-年;mm-月;dd-天;hh-时;ii-分;ss-秒
 * @param val 根据指定时间递增或递减的值
 * @param date 指定时间,默认为当前
 * @param isFormat 是否格式化,false-以'-'分隔时间;true-以'/'分隔时间
 * @returns {string|*} 返回时间字符串
 */
function pStrDateTime(op, lev, val, date, isFormat) {
    var dt, sTime, str;
    date ? dt = new Date(date) : dt = new Date();
    // 当操作目标和值均存仔仔才处理时间
    if (lev && val) {
        switch (lev) {
            case "yy":
                op == "add" ? dt.setFullYear(dt.getFullYear() + val) : dt.setFullYear(dt.getFullYear() - val);
                break;
            case "mm":
                op == "add" ? dt.setMonth(dt.getMonth() + val) : dt.setMonth(dt.getMonth() - val);
                break;
            case "dd":
                op == "add" ? dt.setDate(dt.getDate() + val) : dt.setDate(dt.getDate() - val);
                break;
            case "hh":
                op == "add" ? dt.setHours(dt.getHours() + val) : dt.setHours(dt.getHours() - val);
                break;
            case "ii":
                op == "add" ? dt.setMinutes(dt.getMinutes() + val) : dt.setMinutes(dt.getMinutes() - val);
                break;
            case "ss":
                op == "add" ? dt.setSeconds(dt.getSeconds() + val) : dt.setSeconds(dt.getSeconds() - val);
                break;
        }
    }
    !isFormat ? str = "-" : str = "/";
    sTime = dt.getFullYear() + str + (dt.getMonth() + 1) + str + dt.getDate();
    sTime += " " + dt.getHours() + ":" + dt.getMinutes() + ":" + dt.getSeconds();
    sTime = _callbackNormTime(sTime);
    return sTime;
}

 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值