我輸入任意年月
如何取得此月第一周星期一的日期
知道年份,月份,和月份的第几个星期,求相应的星期是从几号到几号
function finddate(ayear,amonth,aweek)
strdate = CDate(ayear & "-" & amonth & "-1")
if amonth=12 then
strdate1 = CDate(ayear+1 & "-" & "1" & "-1")
else
strdate1 = CDate(ayear & "-" & amonth+1 & "-1")
end if
weekstr = Weekday(strdate)
if weekstr=1 then
if aweek=1 then
weekstart = strdate + CInt((aweek - 1) * 7)
weekend = weekstart + 6
else
weekstart = strdate + CInt((aweek - 2) * 7)+7
weekend = weekstart + 6
if weekend>=strdate1 then
weekend= strdate1-1
end if
end if
end if
if weekstr=2 then
if aweek=1 then
weekstart = strdate + CInt((aweek - 1) * 7)
weekend = weekstart + 5
else
weekstart = strdate + CInt((aweek - 2) * 7)+6
weekend = weekstart + 6
if weekend>=strdate1 then
weekend= strdate1-1
end if
end if
end if
if weekstr=3 then
if aweek=1 then
weekstart = strdate + CInt((aweek - 1) * 7)
weekend = weekstart + 4
else
weekstart = strdate + CInt((aweek - 2) * 7)+5
weekend = weekstart + 6
if weekend>=strdate1 then
weekend= strdate1-1
end if
end if
end if
if weekstr=4 then
if aweek=1 then
weekstart = strdate + CInt((aweek - 1) * 7)
weekend = weekstart + 3
else
weekstart = strdate + CInt((aweek - 2) * 7)+4
weekend = weekstart + 6
if weekend>=strdate1 then
weekend= strdate1-1
end if
end if
end if
if weekstr=5 then
if aweek=1 then
weekstart = strdate + CInt((aweek - 1) * 7)
weekend = weekstart + 2
else
weekstart = strdate + CInt((aweek - 2) * 7)+3
weekend = weekstart + 6
if weekend>=strdate1 then
weekend= strdate1-1
end if
end if
end if
if weekstr=6 then
if aweek=1 then
weekstart = strdate + CInt((aweek - 1) * 7)
weekend = weekstart + 1
else
weekstart = strdate + CInt((aweek - 2) * 7)+2
weekend = weekstart + 6
if weekend>=strdate1 then
weekend= strdate1-1
end if
end if
end if
if weekstr=7 then
if aweek=1 then
weekstart = strdate + CInt((aweek - 1) * 7)
weekend = weekstart
else
weekstart = strdate + CInt((aweek - 2) * 7)+1
weekend = weekstart + 6
if weekend>= strdate1 then
weekend= strdate1-1
end if
end if
end if
finddate=weekstart&"~"&weekend
end function
DateTime dtInput = DateTime.Parse(Year.Text+"-"+Month.Text+"-1");
DateTime dtF = dtInput;
if(dtF.DayOfWeek!=DayOfWeek.Monday)
{
for(int i=1;i<=7;i++)
{
dtF=dtF.AddDays(1);
if(dtF.DayOfWeek==DayOfWeek.Monday)
{
break;
}
}
}
Response.Write("此月第一周星期一是:"+dtF.ToString());
不一定是最优化的,仅提供参考:)