关于日历里的相关操作(长期更新)

 1、根据年月获取该月的天数

  /* 1、根据年月获取该月的天数   getdays(2019, 11)
      year 年份----2019
      month  月份----06  or  6
      */
    function getdays(year, month) {
        return new Date(year, month, 0).getDate();
    }



 

2、根据年月日获取该月是第几周

/* 2、根据年月日获取该月是第几周   getMonthWeek(2019, 11, 6)
         year 年份----2019
         month  月份----11
         data   日----06  or 6
         */
    function getMonthWeek(year, month, data) {
        var date = new Date(year, month - 1, data),
            w = date.getDay(),   //表示是周几 0-6
            d = date.getDate();  //表示是几号  1-31
        return Math.ceil((d + 6 - w) / 7);   //当前日期d加上本周未过的时间6 - w 除以7向上取整得到本月是第几周
    }



 

3、根据年月获取当前月有多少周 (年月)

 /*  3、根据年月获取当前月有多少周 (年月)   根据当月的第一个周一是几号与本月天数相减  向上取整    
     year 年份----2019
     month  月份----11
     getWeeks(2019, 11)
    */
    function getWeeks(year, month) {
        // 该月第一天是周几  转换成1-7
        var w1 = new Date(year, month - 1, 1).getDay();
        if (w1 == 0) w1 = 7;

        // 该月天数
        var dd = new Date(year, month, 0).getDate()

        // 第一个周一是几号  (7代表一周有7天  w1表示是周几  2代表的是周一在第二格)
        let d1;
        if (w1 != 1) d1 = (7 - w1) + 2;
        else d1 = 1;

        //从第一个周一是几号开始算起距离本月结束有多少天除以7向上取整
        let week_count = Math.ceil((dd - d1 + 1) / 7);
        return week_count;
    }


 

4、根据年月日获取当前日期对应的7天的日期数

/*4、根据年月日获取当前日期对应的7天的日期数   getWeek('2019,11,06', 0)
    target:'2019,11,06'
    type:1 按照周一到周天   0按照周天到周六
    */

    function getWeek(target, type) {
        let now = new Date(target);
        let now_day = now.getDay();    //周几 0-6
        let now_time = now.getTime();  //时间戳
        let result;
        if (type === 0) {
            result = [0, 1, 2, 3, 4, 5, 6]
        }
        if (type == 1) {
            result = [1, 2, 3, 4, 5, 6, 7]
        }

        //当前周几跟本周的作对比判断是那几天   比方今天是周3
        return result.map(i => (new Date(now_time + 24 * 60 * 60 * 1000 * (i - now_day))).getDate())
    }

5、根据年月周获取获取当前周第一天是几号

 /*5、根据年月周获取获取当前周第一天是几号   getCurWeekfirstDay(2019, 11, 1)
     year 年份----2019
     month  月份----11
     Week   周数----1
    */
    function getCurWeekfirstDay(year, month, Week) {
        //获取当前的周第一天是几号
        var w1 = new Date(year, month - 1, 1).getDay();
        if (w1 == 0) w1 = 7;
        // 该月天数
        var dd = new Date(year, month, 0).getDate()
        let d1;
        if (w1 != 1) d1 = ((7 - w1) + 2) + 7 * (Week - 1);
        else d1 = 1 + 7 * (Week - 1);
        return d1;
    }

 

6、根据年月周判断当前周的7天  依靠了前一个函数

/*6、根据年月周判断当前周的7天  依靠了前一个函数    getgetWeek1(2019, 11, 1, 0)
     year 年份----2019
     month  月份----11
     Week   周数----1
     type:1 按照周一到周天   0按照周天到周六
    */
    function getgetWeek1(year, month, Week, type) {
        //获取当前的周第一天是几号
        // var w1 = new Date(year, month - 1, 1).getDay();
        // if (w1 == 0) w1 = 7;
        // // 该月天数
        // var dd = new Date(year, month, 0).getDate()
        // let d1;
        // if (w1 != 1) d1 = ((7 - w1) + 2) + 7 * (Week - 1);
        // else d1 = 1 + 7 * (Week - 1);

        let days = getCurWeekfirstDay(year, month, Week)

        let now = new Date(year, month, days);
        let now_time = now.getTime();  //所传日期的时间戳

        //规定周数的样式
        let result;
        if (type === 0) {
            result = [0, 1, 2, 3, 4, 5, 6]
        }
        if (type == 1) {
            result = [1, 2, 3, 4, 5, 6, 7]
        }

        //当前周几跟本周的作对比判断是那几天   比方今天是周3
        return result.map(i => (new Date(now_time + 24 * 60 * 60 * 1000 * (i - 1))).getDate())
    }


 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值