Function GetWeekCount(iYear,iMonth:Integer):Integer;
var
iDay,iLastDay,iWeek:Integer;
dtTime:TDateTime;
begin
Result:=0;
iLastDay:=DaysInAMonth(iYear,iMonth);//一月之中的最后一天
for iDay:=1 to iLastDay do
begin
dtTime:=EncodeDate(iYear,iMonth,iDay);
if iDay=1 then
iWeek:=1
else
iWeek:=DayOfWeek(dtTime);
if iWeek=1 then Inc(Result);
end;
end;
Function GetWeekSpan(iYear,iMonth,iWeekNo:Integer):String;
var
iTotalWeek,iLastDay,iDay,iTemp,iWeek:Integer;
dtTime:TDateTime;
begin
Result:='';
iTotalWeek:=GetWeekCount(iYear,iMonth);
if iTotalWeek<iWeekNo then exit;
iLastDay:=DaysInAMonth(iYear,iMonth);//一月之中的最后一天
iTemp:=0;
for iDay:=1 to iLastDay do
begin
dtTime:=EncodeDate(iYear,iMonth,iDay);
if iDay=1 then
iWeek:=1
else
iWeek:=DayOfWeek(dtTime);
if iWeek=1 then Inc(iTemp);
if iTemp=iWeekNo then
begin
if iWeek=1 then
Result:='Begin at '+IntToStr(iYear)+'-'+IntToStr(iMonth)+'-'+IntToStr(iDay);
if (iWeek=7) or (iDay=iLastDay) then
Result:=Result+#13+'End at '+IntToStr(iYear)+'-'+IntToStr(iMonth)+'-'+IntToStr(iDay);
end
else if iTemp>iWeekNo then
Break;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
showmessage(inttostr(GetWeekCount(2004,10)));
ShowMessage(GetWeekSpan(2004,10,3))
end;