js计算指定时间所在周、月、季度、半年、全年

本文介绍了一个JavaScript函数,用于计算指定日期所在的时间范围,包括周、月、季度、半年和全年。通过解析日期并根据不同的时间类型返回相应的开始和结束日期。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

//获取指定日期whereTheTime的所在周、月、季度、半年、全年
//type为1:周,2:月,3:季度,4:半年,5:全年
function computTimeHorizon(whereTheTime,type){
    var d = new Date(whereTheTime);
    var year = d.getFullYear();
    var month = parseInt(d.getMonth())+1;
    switch (type){
        case 1://周
            //获取周一
            var beginWhereTheTime = GetMondayAndSunday(d);
            var dd = new Date(beginWhereTheTime);
            //获取周天
            dd.setDate(dd.getDate()+6);
            var monthSunday = parseInt(dd.getMonth())+1;
            var endWhereTheTime = dd.getFullYear() + "-" + formatDate(monthSunday) + "-" + formatDate(dd.getDate());
            break;
        case 2://月
            //获取月第一天
            var fristDay= new Date(year,month,1);
            var beginWhereTheTime = year + "-" + formatDate(month) + "-" + formatDate(fristDay.getDate());
            //获取月最后一天
            var lastDay= new Date(year,month,0);
            var endWhereTheTime = year + "-" + formatDate(month) + "-" + formatDate(lastDay.getDate());
            break;
        case 3://季度
            //获取当前月所在季度
            var quarter = getQuarterStartMonth(month);
            if(quarter != 0){
                //获取季度第一天
                var fristDay = new Date(year,quarter,1);
                //获取季度最后一天
                var lastDay = new Date(year,quarter+2,0);
                var beginWhereTheTime = year + "-" + formatDate(quarter) + "-" + formatDate(fristDay.getDate());
                var endWhereTheTime = year + "-" + formatDate(quarter+2) + "-" + formatDate(lastDay.getDate());
            }
            break;
        case 4://半年
            var startMonth = 0;
            var endMonth = 0;
            if(month < 7){//上半年
                startMonth = 1;
                endMonth = 6;
            }else{//下半年
                startMonth = 7;
                endMonth = 12;
            }
            //获取第一天
            var fristDay = new Date(year,1,1);
            //获取最后一天
            var lastDay = new Date(year,6,0);
            var beginWhereTheTime = year + "-" + formatDate(startMonth) + "-" + formatDate(fristDay.getDate());
            var endWhereTheTime = year + "-" + formatDate(endMonth) + "-" + formatDate(lastDay.getDate());
            break;
        case 5://全年
            var beginWhereTheTime = year + "-01-01";
            var endWhereTheTime = year + "-12-31";
            break;
    }
}
//获取指定日期所在周周一
function GetMondayAndSunday(dd) {
    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; //获取月份
    var d = dd.getDate();
    return y + "-" + formatDate(m) + "-" + formatDate(d);
}

//格式化月和日为MM、dd
function formatDate(value){
    if(value < 10){
        value = "0" + value;
    }
    return value;
}

//获取当前月所在季度的开始月
function getQuarterStartMonth(month){
    var quarterStartMonth = 0;
    if(month<4){
        quarterStartMonth = 1;
    }
    if(3<month && month<7){
        quarterStartMonth = 4;
    }
    if(6<month && month<10){
        quarterStartMonth = 7;
    }
    if(month>9){
        quarterStartMonth = 10;
    }
    return quarterStartMonth;
}
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值