如果第一周不满不算一周
<input id="year" value="2005">年<br/>
<input id="week" value="30">周
<input type="button" value="开始运行" onclick="mm()"><br/>周起始日期<input id="weekStart"><br/>
周结束日期<input id="weekEnd">
<SCRIPT LANGUAGE="JavaScript">
<!--
function mm(input)
{
var year = document.getElementById("year").value;
var week = document.getElementById("week").value;
if(year=="" || week=="") return; var d = new Date(year, 0, 1);
d.setDate(parseInt("1065432".charAt(d.getDay())) + week * 7);
var fe = getFirstAndEnd(d);
document.getElementById("weekStart").value = fe.first.format("yyyy年MM月dd日");
document.getElementById("weekEnd").value = fe.end.format("yyyy年MM月dd日");
}
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;
};
Date.prototype.format = function(format)
{
var o = {
"M+" : this.getMonth()+1, //month
"d+" : this.getDate(), //day
"h+" : this.getHours(), //hour
"m+" : this.getMinutes(), //minute
"s+" : this.getSeconds(), //second
"q+" : Math.floor((this.getMonth()+3)/3), //quarter
"S" : this.getMilliseconds() //millisecond
}
if(/(y+)/.test(format)) format=format.replace(RegExp.$1,
(this.getFullYear()+"").substr(4 - RegExp.$1.length));
for(var k in o)if(new RegExp("("+ k +")").test(format))
format = format.replace(RegExp.$1,
RegExp.$1.length==1 ? o[k] :
("00"+ o[k]).substr((""+ o[k]).length));
return format;
};function getFirstAndEnd(d)
{
var w = d.getDay(), n = 24*60*60*1000;
var first = new Date(d.getTime() - parseInt("6012345".charAt(w))*n);
var end = new Date(d.getTime() + parseInt("0654321".charAt(w))*n);
return {first: first, end: end};
}
//-->
</SCRIPT>
<input id="year" value="2005">年<br/>
<input id="week" value="30">周
<input type="button" value="开始运行" onclick="mm()"><br/>周起始日期<input id="weekStart"><br/>
周结束日期<input id="weekEnd">
<SCRIPT LANGUAGE="JavaScript">
<!--
function mm(input)
{
var year = document.getElementById("year").value;
var week = document.getElementById("week").value;
if(year=="" || week=="") return; var d = new Date(year, 0, 1);
d.setDate(parseInt("1065432".charAt(d.getDay())) + week * 7);
var fe = getFirstAndEnd(d);
document.getElementById("weekStart").value = fe.first.format("yyyy年MM月dd日");
document.getElementById("weekEnd").value = fe.end.format("yyyy年MM月dd日");
}
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;
};
Date.prototype.format = function(format)
{
var o = {
"M+" : this.getMonth()+1, //month
"d+" : this.getDate(), //day
"h+" : this.getHours(), //hour
"m+" : this.getMinutes(), //minute
"s+" : this.getSeconds(), //second
"q+" : Math.floor((this.getMonth()+3)/3), //quarter
"S" : this.getMilliseconds() //millisecond
}
if(/(y+)/.test(format)) format=format.replace(RegExp.$1,
(this.getFullYear()+"").substr(4 - RegExp.$1.length));
for(var k in o)if(new RegExp("("+ k +")").test(format))
format = format.replace(RegExp.$1,
RegExp.$1.length==1 ? o[k] :
("00"+ o[k]).substr((""+ o[k]).length));
return format;
};function getFirstAndEnd(d)
{
var w = d.getDay(), n = 24*60*60*1000;
var first = new Date(d.getTime() - parseInt("6012345".charAt(w))*n);
var end = new Date(d.getTime() + parseInt("0654321".charAt(w))*n);
return {first: first, end: end};
}
//-->
</SCRIPT>
<input id="year" value="2005">年<br/>
<input id="week" value="30">周
<input type="button" value="开始运行" onclick="mm()"><br/>周起始日期<input id="weekStart"><br/>
周结束日期<input id="weekEnd">
<SCRIPT LANGUAGE="JavaScript">
<!--
function mm(input)
{
var year = document.getElementById("year").value;
var week = document.getElementById("week").value;
if(year=="" || week=="") return; var d = new Date(year, 0, 1);
d.setDate(d.getDay()==1?((week) * 7):(parseInt("1065432".charAt(d.getDay())) + (week-1) * 7));
var fe = getFirstAndEnd(d);
document.getElementById("weekStart").value = fe.first.format("yyyy年MM月dd日");
document.getElementById("weekEnd").value = fe.end.format("yyyy年MM月dd日");
}
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;
};
Date.prototype.format = function(format)
{
var o = {
"M+" : this.getMonth()+1, //month
"d+" : this.getDate(), //day
"h+" : this.getHours(), //hour
"m+" : this.getMinutes(), //minute
"s+" : this.getSeconds(), //second
"q+" : Math.floor((this.getMonth()+3)/3), //quarter
"S" : this.getMilliseconds() //millisecond
}
if(/(y+)/.test(format)) format=format.replace(RegExp.$1,
(this.getFullYear()+"").substr(4 - RegExp.$1.length));
for(var k in o)if(new RegExp("("+ k +")").test(format))
format = format.replace(RegExp.$1,
RegExp.$1.length==1 ? o[k] :
("00"+ o[k]).substr((""+ o[k]).length));
return format;
};function getFirstAndEnd(d)
{
var w = d.getDay(), n = 24*60*60*1000;
var first = new Date(d.getTime() - parseInt("6012345".charAt(w))*n);
var end = new Date(d.getTime() + parseInt("0654321".charAt(w))*n);
return {first: first, end: end};
}
//-->
</SCRIPT>
<input id="week" value="30">周
<input name=checkdate value="2006-02-28">
<input name=check type=button value="开始" onclick=show()>
<script language=javascript>
function show()
{
var str=document.getElementById("checkdate").value.split("-")
var CheckDate=new Date(str[0],(str[1]-parseInt(1)),str[2])
var yearBegin=new Date(str[0],0,0);
alert(Math.floor(((CheckDate-yearBegin)/86400000+parseInt(("0654321".charAt(CheckDate.getDay()))))/7))
}
</script>
{
Week week = new Week();
if( dateTime.AddDays((7 - (int)(dateTime.DayOfWeek))%7).Year > dateTime.Year )
{
week.Year = dateTime.Year + 1;
week.WeekOfYear = 1;
}
else
{
DateTime firstDayOfYear = new DateTime(dateTime.Year,1,1);
int dayOfYear = dateTime.DayOfYear + (int)(firstDayOfYear.DayOfWeek) -1;
if( firstDayOfYear.DayOfWeek == DayOfWeek.Sunday )
{
dayOfYear += 7;
} week.Year = dateTime.Year;
week.WeekOfYear = Convert.ToInt16(dayOfYear/7.0 + 0.499);
}
return week;
}