function WeekofYear(Date: TDate): integer;
var
  FirstDay, FirstWeekEnd, NowWeekEnd: TDate;
  Year, Month, Day: word;
begin
  DecodeDate(Date, Year, Month, Day);
  FirstDay := EncodeDate(Year, 1, 1);
  FirstWeekEnd := FirstDay +  7 - DayofWeek(FirstDay);
  NowWeekEnd := Date + 7 - DayofWeek(Date);
  Result := Round(NowWeekEnd - FirstWeekEnd) div 7 + 1;
end;

解决方案 »

  1.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
    v_nowofweeks,v_nowofweeksofday:integer;
    v_firstday:Tdate;
    v_firstdayofweek:integer;
    ADate: TDate;
    begin
      ADate := strtodate(edit2.text);
      v_firstday:=strtodate(copy(datetostr(adate),0,4)+ '-01-01');
      v_firstdayofweek:=dayofweek(v_firstday);
      v_nowofweeks:=round(adate - v_firstday) div 7 + 1;
      v_nowofweeksofday:=round(adate - v_firstday) mod 7;
      if v_firstdayofweek + v_nowofweeksofday >7 then
        showmessage(edit2.text + ' is the ' + inttostr(v_nowofweeks + 1) +' week')
      else
        showmessage(edit2.text + ' is the ' + inttostr(v_nowofweeks) +' week');
    end;
    //在edit2中输入日期