这样做比自己去推算什么闰年、大小月容易多了:<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>
其实计算闰看也不是很难,不过那闰年规则实在容易把人搞糊涂:
下面是用数组的形式计算每上月的结束日:<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>
当前周的起始结束日期:<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>
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>
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>