计算一年中所有周的时间段

    function WeekMag(year,setWeek) {
        //year 年, startDay星期几天始
        this.year = (new Date).getFullYear();
        this.setSw = 7; //默认是7,设置星期四为周开始日 星期天时为7,周1-6->1-6
        if (year != null) {
            this.year = year; //(new Date).getFullYear();
        }
        if (setWeek != null) {
            this.setSw = setWeek;
        }
        //第一周有几天
        this.firstWeek = function () {
            var sDate = new Date(this.year + "-01-01  23:59"); //开始的第一天
            var sDay = sDate.getDay(); //开始的第一天是星期几 这个很重要, 
            // var setSw = 4; //设置星期四为周开始日 星期日时为7,周一-六->1-6
            if (this.setSw >= sDay) {
                sDay = this.setSw - sDay;
            }
            else if (sDay > this.setSw) {
                sDay = Math.abs(this.setSw - sDay); //计算第一周有几天
                sDay = 7 - sDay;
            }
            return sDay;
        } 
        //获取这一年中的周
        this.GetArr = function () {
            var sDate = new Date(this.year + "-01-01  23:59"); //开始的第一天
            var odm = 1000 * 24 * 60 * 60; //一天的毫秒数
            var tempArr = [];
            var Milli = Date.parse(sDate);
            sDay = this.firstWeek(); 
            for (var i = 0; i < 58; i++) {
                if (sDay > 0) {
                    if (i == 0) {
                        eDate = new Date(Milli + odm * (sDay - 1));
                    }
                    else {
                        sDate = new Date(Milli + odm * (sDay + (i - 1) * 7)); //开始的第一天
                        eDate = new Date(Milli + odm * (sDay + i * 7 - 1));
                    }
                }
                else {
                    sDate = new Date(Milli + odm * (sDay + i * 7)); //开始的第一天
                    eDate = new Date(Milli + odm * (sDay + (i + 1) * 7 - 1));
                }
                if (eDate.getFullYear() > this.year) {
                    eDate = new Date((this.year + 1).toString() + "-01-01  23:59");
                    eDate = new Date(Date.parse(eDate) - odm);
                    i = 1000;//无穷大,直接退出
                }
                obj = { "sd": sDate.getFullYear().toString() + "-" + (sDate.getMonth() + 1).toString() + "-" + sDate.getDate().toString(), "ed": eDate.getFullYear().toString() + "-" + (eDate.getMonth() + 1).toString() + "-" + eDate.getDate().toString() };
                tempArr.push(obj);
            }
            return tempArr;
        };
    }

    var wm = new WeekMag(2014);
    wm.GetArr();

  计算一年中所有周的时间段

posted @ 2015-01-29 18:46  我是猴子  阅读(353)  评论(0编辑  收藏  举报