js 獲取每個月有幾周,根據年月周獲取該周從週一到週日的日期等方法

//獲取每個月有幾周(注:從第一個週一開始算該月第一週)
function getWeeks(year, month) {
    var d = new Date();
    // 該月第一天
    d.setFullYear(year, month - 1, 1);
    var w1 = d.getDay();
    if (w1 == 0) w1 = 7;
    // 該月天數
    d.setFullYear(year, month, 0);
    var dd = d.getDate();
    // 第一個週一
    let d1;
    if (w1 != 1) d1 = 7 - w1 + 2;
    else d1 = 1;
    let week_count = Math.ceil((dd - d1 + 1) / 7);
    return week_count;
}
//根據年月周獲取該周從週一到週日的日期
function getWeekTime(year, month, weekday) {
    var d = new Date();
    // 該月第一天
    d.setFullYear(year, month - 1, 1);
    var w1 = d.getDay();
    if (w1 == 0) w1 = 7;
    // 該月天數
    d.setFullYear(year, month, 0);
    var dd = d.getDate();
    // 第一個週一
    let d1;
    if (w1 != 1) d1 = 7 - w1 + 2;
    else d1 = 1;
    var monday = d1 + (weekday - 1) * 7;
    var sunday = monday + 6;
    var from = year + "-" + month + "-" + monday;
    var to;
    if (sunday <= dd) {
        to = year + "-" + month + "-" + sunday;
    } else {
        d.setFullYear(year, month - 1, sunday);
        let days = d.getDate();
        to = d.getFullYear() + "-" + (d.getMonth() + 1) + "-" + days;
    }
    console.log(weekday + " 從" + from + " 到 " + to + "");
}
//獲取每個月第幾周的週一的日期
function getMondayTime(year, month, weekday) {
    var d = new Date();
    // 該月第一天
    d.setFullYear(year, month - 1, 1);
    var w1 = d.getDay();
    if (w1 == 0) w1 = 7;
    // 該月天數
    d.setFullYear(year, month, 0);
    var dd = d.getDate();
    // 第一個週一
    let d1;
    if (w1 != 1) d1 = 7 - w1 + 2;
    else d1 = 1;
    var monday = d1 + (weekday - 1) * 7;
    return monday;
}
//獲取週一的日期
function getMonDate() {
    var d = new Date(),
    day = d.getDay(),
    date = d.getDate();
    if (day == 1) return d;
    if (day == 0) d.setDate(date - 6);
    else d.setDate(date - day + 1);
    return d;
}
//得到週期名字
function getDayName(day) {
    var day = parseInt(day);
    if (isNaN(day) || day < 0 || day > 6) return false;
    var weekday = ["週日", "週一", "週二", "週三", "週四", "週五", "週六"];
    return weekday[day];
}
//得到當前日期在當月第幾周
//不包括跟上個月重合的部分
function getMonthWeek(a, b, c) {
    var date = new Date(a, parseInt(b) - 1, c),
    w = date.getDay(),
    d = date.getDate();
    return Math.ceil((d + 6 - w) / 7);
}
//獲取當月最後一天日期
function getLastDay(year, month) {
    var new_year = year; //取當前的年份
    var new_month = month++; //取下一個月的第一天,方便計算(最後一天不固定)
    if (month > 12) {
        new_month -= 12; //月份減
        new_year++; //年份增
    }
    var new_date = new Date(new_year, new_month, 1); //取當年當月中的第一天
    return (new Date(new_date.getTime() - 1000 * 60 * 60 * 24)).getDate(); //獲取當月最後一天日期
}
//根據當前日期獲取該天所在周,若該月1號不是週一,獲取該月第一週的週一日期,小於該日期的歸爲上個月最後一週
//當前日期幾月第幾周
function showDate() {
    var that = this;
    var d = this.getMonDate();
    var ds = new Date();
    var arr = [];
    for (var i = 0; i < 7; i++) {
        let weekDay = this.getDayName(d.getDay());
        let date = d.getDate() + '日';
        if (weekDay == '週一') {
            let beginTime = ds.getFullYear() + '-' + (d.getMonth() + 1) + '-' + d.getDate();
            that.state.beginTime = beginTime;
        }
        if (weekDay == '週日') {
            let endTime = ds.getFullYear() + '-' + (d.getMonth() + 1) + '-' + d.getDate();
            that.state.endTime = endTime;
        }
        arr.push({
            weekDay: weekDay,
            date: date
        });
        d.setDate(d.getDate() + 1);
    }
    let month = ds.getMonth() + 1;
    let weeks = this.getMonthWeek(ds.getFullYear(), month, ds.getDate()) - 1;
    //每個月週一日期
    let oneDate = that.getMondayTime(ds.getFullYear(), month, 1);
    if (ds.getDate() < oneDate) {
        month = ds.getMonth();
        weeks = this.getWeeks(ds.getFullYear(), month);
    }
    console.log('month:', month, 'weeks:', weeks);
    this.setState({
        list: arr,
        yearDate: ds.getFullYear(),
        monthDate: month,
        month: ds.getMonth() + 1,
        monthWeek: '第' + weeks + '周',
        theMonthWeek: '第' + weeks + '周'
    });
}

 

轉載自:http://www.javashuo.com/article/p-cxjpsiuv-cy.htmlhtml

相關文章
相關標籤/搜索