zoukankan      html  css  js  c++  java
  • 获取当前周的周一,根据周数获取日期,根据日期获取周数

      //获取当前日期的周一
      getMonday(dd) {
        let week = dd.getDay(); //获取时间的星期数,周日是0
        let minus = week ? week - 1 : 6;
        dd.setDate(dd.getDate() - minus); //获取minus天前的日期
        let y = dd.getFullYear();
        let m = dd.getMonth() + 1; //获取月份
        m = m < 10 ? ('0' + m) : m;
        let d = dd.getDate();
        d = d < 10 ? ('0' + d) : d;
        return y + "-" + m + "-" + d;
      },
      //根据周获取当前周最后一天,再获取那天的所在周的周一
      //"week:2018-W35"  return:2018-8-27
      getDayForWeek(week){
        if (week.length < 0) {
          return false;
        }
        let myDate = new Date(week.split("-")[0], 0, 1);//设置当前年的1月1日
        let myweek = myDate.getDay(); //获取时间的星期数,周日是0
        myweek = myweek ? myweek - 1 : 6;
        //如果1号<周五,则为第一周,>周五则为去年最后一周
        if (myweek < 4) {
          //前移日期
          myDate.setDate(myDate.getDate() - myweek);
        } else {
          //后移日期
          myDate.setDate(myDate.getDate() + 7 - myweek);
        }
        myDate.setDate(myDate.getDate() + parseInt(week.split("W")[1] - 1) * 7); //获取周的加成
        return this.getMonday(myDate);
      },
      //获取日期在当前年的周数
      //day: 2018-8-27 week:2018-W05
      getWeekForDay(day){
        let da = '';
        if (day == undefined) {
          let now = new Date();
          da = this.getMonday(now);
        } else {
          da = day;
        }
        //(当前日期-当年第一周第一天)/7 = 周次
        let date1 = new Date(Date.parse(da));//当前日期
        date1 = this.getMonday(date1);
        date1 = new Date(Date.parse(date1));
        date1.setDate(date1.getDate() + 3); //获取当前日期的周四(针对每年第一个月不同周次的计算)
    
        let date2 = new Date(date1.getFullYear(), 0, 1); //当年的1月1号
        let dateWeekNum = date2.getDay();//获取时间的星期数,周日是0
        dateWeekNum = dateWeekNum ? dateWeekNum - 1 : 6;
        //如果1号<周五,则为第一周,>周五则为去年最后一周
        if (dateWeekNum < 4) {
          //前移日期(本周一)
          date2.setDate(date2.getDate() - dateWeekNum);
        } else {
          //后移日期(下周一)
          date2.setDate(date2.getDate() + 7 - dateWeekNum);
        }
        //Math.round 四舍五入到整数
        let d = Math.round((date1.valueOf() - date2.valueOf()) / 86400000); //86400000==1000毫秒 * 60秒 * 60分钟* 24小时==天数
        //得到年数周数
        let year = date1.getFullYear();
        //向上取整
        let week = Math.ceil((d + 1) / 7);
        week = week < 10 ? ('0' + week) : week;
        console.log(year + "-W" + week);
        return year + "-W" + week;
      }
  • 相关阅读:
    asp.net 发送邮件
    效控制C#中label输出文字的长度,自动换行
    无法连接到WMI 提供程序 请注意,你只能使用SQL Server 配置管理器来管理SQL Server 2005服务器。找不到指定的模块。[0x8007007e]
    查询区分大小写
    ASP.NET母版页引用外部css和js文件的写法
    VS2008 Debugging Breakpoint 补丁
    firefox下获得焦点
    IE打开出现windows找不到文件'(null)'解决方法Vinzipblog文之巴博客
    邪恶的web上下键焦点移动
    jQuery对下拉框Select操作总结
  • 原文地址:https://www.cnblogs.com/sanqianjin/p/9669359.html
Copyright © 2011-2022 走看看