js 日期 根据周转换日期 日期转换周

4,235 阅读1分钟
    // 根据周数获取日期
        // w 周
        // y 年
    function getDateOfISOWeek(w, y) {
        var simple = new Date(y, 0, 1 + (w - 1) * 7);
        var dow = simple.getDay();
        var ISOweekStart = simple;
        if (dow <= 4)
            ISOweekStart.setDate(simple.getDate() - simple.getDay() + 1);
        else
            ISOweekStart.setDate(simple.getDate() + 8 - simple.getDay());
            console.log(ISOweekStart.getFullYear())
            console.log(ISOweekStart.getMonth() + 1)
            console.log(ISOweekStart.getDate())
        return ISOweekStart;
   }
    
    getWeek(new Date('2019-11-26'))
    function getWeek (str) {
        let day=Date.parse(str);
        //如果不是当年的第一天不是星期一,则该日所属周数为上一年的最后一周
        day=new Date(day);
    
        if(day.getDay() !== 1){
            day = day.getTime()-24*60*60*1000
            day = new Date(day);
        }
        day.setMonth(0);
        day.setDate(1);
        day.setHours(0);
        day.setMinutes(0);
        day.setSeconds(0);//到这里就得到该年的一月一日
    
        let today = Date.parse(str);
        today=new Date(today);
        let todayWeek = today.getDay()
    
        //计算日期是一年中的第几天
        let rankDay = Math.ceil((today.getTime()-day.getTime())/(1000*24*60*60))
        let rankWeek = Math.ceil(rankDay/7)
        rankWeek = rankWeek < 10?("0"+rankWeek):rankWeek
        let year = day.getFullYear().toString()
        console.log(year)
        console.log(rankWeek)
        return year+rankWeek
    }
    // 根据日期计算 周一和周日  日期
    function setDate(date) {
        let nowTime = date.getTime()
        let day = date.getDay()
        let oneDayTime = 24*60*60*1000
        let MonDayTime = nowTime - (day -1)*oneDayTime
        let sunDayTime = nowTime + (7-day)*oneDayTime
        let monDay = new Date(MonDayTime)
        let sunDay = new Date(sunDayTime)
        let startTime = this.formatDate(monDay)
        let endTime = this.formatDate(sunDay)
    }
    
    // 格式化日期
    function formatDate (date) {
        let year = date.getFullYear()
        let month = date.getMonth() + 1
        let dateTime = date.getDate()
        if (month < 10){
            month = '0' + month
        }
        if (dateTime < 10) {
            dateTime = '0' + dateTime
        }
        return year + '-' + month + '-' + dateTime
        
    }