怎么获得一年下有多少个周,一周下的日期。如2009年有53周。第18周 从5月4日到5月10日。

解决方案 »

  1.   


    function calWeek(dt){ 
    var calDay=dt||new Date(); //当前要计算的时间 
    var firstDay=new Date(calDay.getFullYear(),0,1); //本年第一天 
    //计算当前是本年的第几天,00:00为当天开始 
    var daysAll=Math.floor((calDay-firstDay)/1000/60/60/24)+1; 
    //本年第一天星期几 
    var firstDayWeekday=firstDay.getDay(); 
    //该结果加到第一周的周一,便于后面计算 
    var diffDay=firstDayWeekday==0?6:firstDayWeekday-1; 
    daysAll=daysAll+diffDay; 
    return Math.ceil(daysAll/7); //返回计算结果 
      

  2.   


    <input type="text" id="textyear" value="2009">年<input type="button" value="计算周数" onclick="getWeekNumber()"><span id="span1"></span>
    <br/>
    <input type="text" id="textweek" value="18">周<input type="button" value="计算日期" onclick="getDates()"><span id="span2"></span><script>
    function getWeekNumber(){
    var theYear = document.getElementById("textyear").value;
    var firstDay = new Date(theYear + "/01/01");
    var counter = 0;
    while(firstDay.getFullYear() == theYear){
    firstDay.setDate(firstDay.getDate() + 7);
    counter++;
    }
    document.getElementById("span1").innerHTML = theYear + "年有" + counter + "周";
    }function getDates(){
    var theYear = document.getElementById("textyear").value;
    var theWeek = document.getElementById("textweek").value;
    var theDay = new Date(theYear + "/01/01");
    theDay.setDate(theDay.getDate() + 7 * theWeek);
    while(theDay.getDay() != 1){
    theDay.setDate(theDay.getDate() - 1);
    }
    document.getElementById("span2").innerHTML = theYear + "年,第" + theWeek + "周:" 
    + theDay.getFullYear() + "-" + (theDay.getMonth() + 1) + "-" + theDay.getDate()
    + " ~ "
    + theDay.getFullYear() + "-" + (theDay.getMonth() + 1) + "-" + (theDay.getDate() + 6);
    }
    </script>