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

//获取指定日期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
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
要获取指定日期所在一和日,可以使用 JavaScript 中的 Date 对象和相关方法。下面是一个获取指定日期所在一和日的示例代码: ```javascript function getWeekMondayAndSunday(dateString) { const date = new Date(dateString); const dayOfWeek = date.getDay(); // 0-6,0 表示星期日,1 表示星期一,依次类推 const offset = dayOfWeek === 0 ? -6 : 1; // 如果日期是星期日,偏移量为 -6,否则为 1 const monday = new Date(date.getTime() - (dayOfWeek - 1) * 24 * 60 * 60 * 1000); const sunday = new Date(date.getTime() + (7 - dayOfWeek) * 24 * 60 * 60 * 1000); return { monday: monday.toLocaleDateString(), sunday: sunday.toLocaleDateString() }; } // 示例使用 const { monday, sunday } = getWeekMondayAndSunday('2023-03-01'); console.log('一:', monday); console.log('日:', sunday); ``` 解释一下这段代码: 1. 首先将传入的日期字符串转换为 Date 对象。 2. 然后使用 Date 对象的 getDay() 方法获取传入日期所在的星期几,得到一个 0-6 的数字,其中 0 表示星期日,1 表示星期一,以此类推。 3. 计算从传入日期到一的偏移量,如果传入日期是星期日,偏移量为 -6,否则为 1。 4. 用 Date 对象的 getTime() 方法获取传入日期的时间戳,然后根据偏移量计算一和日的时间戳,最后将时间戳转换为 Date 对象。 5. 使用 toLocaleDateString() 方法将日期对象转换为本地字符串形式,返回包含一和日的对象。 示例代码中假设传入的日期字符串格式为 'YYYY-MM-DD',如果格式不同,需要根据实际情况进行调整。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值