怎样用JS 根据日期返回此日期是今年的第几周?例如:2010-10-13  返回41  41是2010的第41周

解决方案 »

  1.   


    var getYearWeek = function (a, b, c) { 
    var d1 = new Date(a, b-1, c), d2 = new Date(a, 0, 1), 
    d = Math.round((d1 - d2) / 86400000); 
    return Math.ceil((d + ((d2.getDay() + 1) - 1)) / 7); 
    };
    alert(getYearWeek(2010, 10, 13));
      

  2.   

    为啥用 Math.round 和 Math.ceil
      

  3.   


    function setDate(temp)
    {
        var date = new Date(temp);
        var Year = date.getYear();
        var Month = date.getMonth();
        var Day = date.getDate();    var d1 = new Date(Year, Month, Day);
        var d2 = new Date(Year, 0, 1);
        var d = Math.round((d1 - d2) / 86400000)-1; 
        var week = Math.ceil((d + ((d2.getDay() + 1) - 1)) / 7);      alert(week);
    }
    我试着套你的那个方法 我是想根据一个日期 temp 得到一个当前周 是从星期一开始算的
      

  4.   

    [code={JScript}]{            var getWeeks = function(year, mouth, day) {
                var day1 = new Date(year, mouth-1, day);
                var day2 = new Date(year, 0, 1);
                
                var firstweek = day2.getDay();
                if(firstweek == 0) {
                    firstweek = 6;
                }else {
                    firstweek = firstweek - 1;
                }
                firstweek = (7 - firstweek) % 7;
                var day3 = new Date(year, 0, 1+firstweek)
                var result = Math.round((day1.getTime() - day3.getTime())/(1000*60*60*24));
                result = Math.ceil(result / 7);
                return result;
            };
            alert(getWeeks(2010, 10, 13));}[/code] 
      

  5.   

    var getWeeks = function(year, mouth, day) {
    var day1 = new Date(year, mouth-1, day);
    var day2 = new Date(year, 0, 1);

    var firstweek = day2.getDay();//1月1日是星期几
    if(firstweek == 0) {
    firstweek = 6;
    }else {
    firstweek = firstweek - 1;
    }//转化为0表示星期一,6表示星期日
    firstweek = (7 - firstweek) % 7;//计算1月1日离第一周的天数
    var day3 = new Date(year, 0, 1+firstweek)
    var result = Math.round((day1.getTime() - day3.getTime())/(1000*60*60*24));
    result = Math.ceil(result / 7);
    return result;
    };
    alert(getWeeks(2010, 10, 13));
      

  6.   

    刚才的测试了下,应该有点问题.修改后具体测试了下1月3日,1月4日 var getWeeks = function(year, mouth, day) {
    var day1 = new Date(year, mouth-1, day);
    var day2 = new Date(year, 0, 1);

    var firstweek = day2.getDay();//1月1日是星期几
    if(firstweek == 0) {
    firstweek = 6;
    }else {
    firstweek = firstweek - 1;
    }//转化为0表示星期一,6表示星期日
    firstweek = (7 - firstweek) % 7;//计算1月1日离第一周的天数
    var day3 = new Date(year, 0, 1+firstweek)
    var result = Math.round((day1.getTime() - day3.getTime())/(1000*60*60*24));
    result = Math.floor(result / 7)+1;//这个地方应该用floor返回最小次数然后+1
    return result;
    };
    alert(getWeeks(2010, 10, 13));
      

  7.   

    还是不行的,我的日历控件显示时这样的
                   2010
    Sun  Mon  Tues  Wed  Thur  Fri  Sat
    26   27    28    29   30    1    2 
    3    4     5     6    7     8    9
    10   11    12    13   14    15   16
    17   18    19    20   21    22   23
    24   25    26    27   28    29   30
    31   1     2     3    4     5    6当我点了 10 这一天的话 返回的时间是 2010-10-10  用你门的方法一调,返回的是40周了,
    其实 10 11 12 13 14 15 16 这几天都是属于41周的 下面的17....23是42周 3.....9 是40周的
    是从星期一开始算的 不是每周日 太麻烦你们了。还能帮我想想么?
      

  8.   

    对的 我改了一下你的代码
    将firstweek = (7 - firstweek) % 7;//计算1月1日离第一周的天数
    改成firstweek = (6 - firstweek) % 6;//计算1月1日离第一周的天数 就适合我用了,你看看
    我这样改会不会出问题。
      

  9.   

    我的在火狐上可以,但在IE上不行
    <script language="javascript">
    Date.prototype.getWeek = function(flag)
    {
    var first = new Date(this.getFullYear(), 0, 1);
    var n = parseInt("1065432".charAt(first.getDay()));
    n = this.getTime()-first.getTime()-n*24*60*60*1000;
    n = Math.ceil(n/(7*24*60*60*1000));
    return (flag==true&&first.getDay()!=1)?(n+1):n;
    };
    function rd(){


    //set it

    var d = document.getElementById("cstart_date_day").value;
    //alert(d);
    var m= document.getElementById("cstart_date_month").value;
    var ye = document.getElementById("cstart_date_year").value;var riqi=ye+"-"+m+"-"+d;
    //alert(riqi);
    var zhou=new Date(riqi).getWeek(true)
    //alert(zhou);
    $.ajax({
    type: "POST",
    url: "c21listingguoqutuijie.php",

    //data: "district=",
    data: "zhou=" +  zhou,
     
    dataType: "html",
    success: function(msg){ if(parseInt(msg)!=0)
    {
    $('#guoqutuijie').html(msg);
    }
    } }); //document.getElementById(objname+'_year').value = storeArr[0];
    }
    </script>
    谁能帮我指点下.这是为什么?在IE上没有走这个var zhou=new Date(riqi).getWeek(true)函数.
    急用