楼上的,有那函数吗???!!!!!(weekofyear(date) )拜托各位大虾详细点

解决方案 »

  1.   

    还有BCB的提示很重要的,算算吧!
      

  2.   

    1、算出是否为润年;
    2、求出当前日期为这一年的第几天(Day);
    3、确立一个基准起点(7-元旦这天的星期数)DayZro,因为元旦不一定是周一。
    4、Day-DayZro如果为负则为第一周,否则int(Day-DayZro/7+1+0.5)//+1.5是因为int不是四舍五入。
      

  3.   

    function Tform1.getMonthWeekNum (fDate:Tdate):integer;
    var OrderInWeek,OrderInYear:integer;
        year,month,day:word;
        firstDayOfYear:Tdate;
    begin
      DecodeDate(fDate,year,month,day);
      firstDayOfYear:=EncodeDate(year,1,1);
      OrderInWeek:=dayOfWeek(firstDayOfYear);
      OrderInYear := Trunc(fdate-firstDayOfYear);
      result:=((OrderInYear+OrderInWeek-1) div 7) +1;
    end;
      

  4.   

    sorry,写错了,delphi6.0有
    weekoftheyear(date)
      

  5.   

    在delphi中日期是一个数字型,整数部分是天数,小数部分是一天的具体时间。
    所以可以用取整后,相差。(减元旦的整数) BCB(:))的话是对的
      

  6.   

    Delphi6.0中的原码!!
    procedure DecodeDateWeek(const AValue: TDateTime; out AYear, AWeekOfYear,
      ADayOfWeek: Word);
    var
      LDayOfYear: Integer;
      LMonth, LDay: Word;
      LStart: TDateTime;
      LStartDayOfWeek, LEndDayOfWeek: Word;
      LLeap: Boolean;
    begin
      LLeap := DecodeDateFully(AValue, AYear, LMonth, LDay, ADayOfWeek);
      ADayOfWeek := CDayMap[ADayOfWeek];
      LStart := EncodeDate(AYear, 1, 1);
      LDayOfYear := Trunc(AValue - LStart + 1);
      LStartDayOfWeek := DayOfTheWeek(LStart);
      if LStartDayOfWeek in [DayFriday, DaySaturday, DaySunday] then
        Dec(LDayOfYear, 8 - LStartDayOfWeek)
      else
        Inc(LDayOfYear, LStartDayOfWeek - 1);
      if LDayOfYear <= 0 then
        DecodeDateWeek(LStart - 1, AYear, AWeekOfYear, LDay)
      else
      begin
        AWeekOfYear := LDayOfYear div 7;
        if LDayOfYear mod 7 <> 0 then
          Inc(AWeekOfYear);
        if AWeekOfYear > 52 then
        begin
          LEndDayOfWeek := LStartDayOfWeek;
          if LLeap then
          begin
            if LEndDayOfWeek = DaySunday then
              LEndDayOfWeek := DayMonday
            else
              Inc(LEndDayOfWeek);
          end;
          if LEndDayOfWeek in [DayMonday, DayTuesday, DayWednesday] then
          begin
            Inc(AYear);
            AWeekOfYear := 1;
          end;
        end;
      end;
    end;