这样做比自己去推算什么闰年、大小月容易多了:<script language="javaScript">
function datebe(da){
var a=new Date(da);
var mon=a.getMonth()+1;
var yea=a.getYear();
var beginday=mon+"/1/"+yea;
if(mon==12){mon=1;yea=yea+1;}
else mon=mon+1;
var endday=new Date(mon+"/1/"+yea);
endday=endday-24*3600000;
endday=new Date(endday);
endday=(endday.getMonth()+1)+"/"+endday.getDate()+"/"+endday.getYear();
return beginday+":"+endday;
}function weekb(yea,wee){
var b=new Date("1/1/" +yea);
var bb=b-1;
bb=bb+1+((wee-1)*7-b.getDay())*24*3600000;
var be=bb+6*24*3600000;
if(((wee-1)*7-b.getDay())<0)bb=bb+b.getDay()*24*3600000;
bb=new Date(bb);
be=new Date(be);
return (bb.getMonth()+1)+"/"+bb.getDate()+"/"+bb.getYear()+":"+(be.getMonth()+1)+"/"+be.getDate()+"/"+be.getYear();
}alert(datebe("12/25/2005"));
alert(weekb("2004",1));
</script>

解决方案 »

  1.   


    其实计算闰看也不是很难,不过那闰年规则实在容易把人搞糊涂:
    下面是用数组的形式计算每上月的结束日:<script language="javaScript">
    function datebe(da){
    var a=new Date(da);
    var yea=a.getYear();
    var mon=a.getMonth();
    var Monthdays=new Array(31,28,31,30,31,30,31,31,30,31,30,31);
    Monthdays[1] = (0==yea%4 && (yea%100!=0 || yea%400==0)) ? 29 : 28;
    var beginday=(mon+1)+"/1/"+yea;
    var endday=(mon+1)+"/"+Monthdays[mon]+"/"+yea;
    return beginday+":"+endday;
    }alert(datebe("12/25/2005"));
    </script>
      

  2.   


    当前周的起始结束日期:<script language="javaScript">
    function weekb(da){
    var b=new Date(da);
    var bb=b-1;
    bb=b-b.getDay()*24*3600000;
    var be=bb+6*24*3600000;
    bb=new Date(bb);
    be=new Date(be);
    return (bb.getMonth()+1)+"/"+bb.getDate()+"/"+bb.getYear()+":"+(be.getMonth()+1)+"/"+be.getDate()+"/"+be.getYear();
    }alert(weekb("12/2/2005"));
    </script>
      

  3.   

    <script>
       function getWeekStartEnd(str){
       //求指定日期所在星期的开始和结束  从周日到周六
         var ldate=86400000; var td=new Date(str);
         var dtend=new Date(td.getTime()-td.getDay()*ldate+6*ldate);
         var dtstart=new Date(dtend.getTime()-6*ldate);
         return new Array(dtstart,dtend);
       }
       function getMonthStartEnd(str){
       //求指定日期所在月的开始和结束
         var td=new Date(str);td.getDate();
     var dtstart=new Date(td.getTime());dtstart.setDate(1);
     var dtend=new Date(td.getTime());
     dtend.setMonth(td.getMonth()+1);
     dtend.setDate(0);
         return new Array(dtstart,dtend);
       }
       var ret=getWeekStartEnd("2005/9/28"); 
       alert("所在的星期:从"+ret[0]+"到"+ret[1]);
       ret=getMonthStartEnd("2005/9/28"); 
       alert("所在的月:从"+ret[0]+"到"+ret[1]);
    </script>
      

  4.   

    <script>
    function getMonthStartDay(y,m)
    {
    return new Date(y,m-1,1);
    }function getMonthEndDay(y,m)
    {
    return new Date(y,m,0);
    }function getWeekStartDay(y,w)
    {
    var tempD=new Date(y,0,1);
    return new Date(y,0,7*w-6-tempD.getDay())
    }function getWeekEndDay(y,w)
    {
    var tempD=new Date(y,0,1);
    return new Date(y,0,7*w+1-tempD.getDay())
    }alert("2005年1月末"+getMonthEndDay(2005,1));
    alert("2005年1周始"+getWeekStartDay(2005,1));
    alert("2005年1周末"+getWeekEndDay(2005,1));
    </script>