//你发的帖子都没有结帐过呀?!
?*****十万火急****(wsxxsw) 50 0 5-23 16:17 管理 
?日期处理(wsxxsw) 20 9 5-22 13:33 管理 
?****调出日期*******(wsxxsw) 20 3 5-13 14:08 管理 
?给你一个时间段(如2002/5/3-2003/2/3)(wsxxsw) 20 6 5-9 09:16 管理 

解决方案 »

  1.   

    我不是什么高手,我和你一样都是普通人,专家分只能说明答题的数量为你解决这个问题,我至少需要:
    有一年的编程经验
    花两分钟组织构思
    花十分种编写代码
    花三分钟调试程序难道回复之后,你不愿意
    花一分钟给一个回复?
    花三分钟把帖子结帐?//话不多说//参考代码如下//只要解决问题就好
    function Calc(mStartDate, mEndDate: TDate; mStrings: TStrings): Boolean;
    var
      vYear, vMonth, vDay: Word;
      vYear1, vMonth1: Word;
      I: Integer;
    begin
      Result := False;
      if not Assigned(mStrings) then Exit;
      DecodeDate(mStartDate, vYear, vMonth, vDay);
      if not (vMonth in [1, 4, 7, 10]) then Exit;
      DecodeDate(mEndDate, vYear1, vMonth1, vDay);
      if ((vYear1 - vYear) * 12 + (vMonth1 - vMonth) + 1) mod 3 <> 0 then Exit;
      mStrings.Clear;
      mStartDate := EncodeDate(vYear, 1, 1);
      while mStartDate <= mEndDate do begin
        for I := 1 to 3 do
          mStrings.Add(Format('%s-%s', [
            FormatDateTime('yyyy"-"m"-"d', mStartDate),
            FormatDateTime('yyyy"-"m"-"d', IncMonth(mStartDate, 3) - 1)]));
        mStartDate := IncMonth(mStartDate, 3);
      end;
      Result := True;
    end;procedure TForm1.Button1Click(Sender: TObject);
    var
      R1, R2: TDate;
    begin
      R1 := StrToDate('2002-1-1');
      R2 := StrToDate('2003-3-21');
      Calc(R1, R2, Memo1.Lines);
    end;
      

  2.   

    我不是什么高手,我和你一样都是普通人,专家分只能说明答题的数量为你解决这个问题,我至少需要:
    有一年的编程经验
    花两分钟组织构思
    花十分种编写代码
    花三分钟调试程序难道回复之后,你不愿意
    花一分钟给一个回复?
    花三分钟把帖子结帐?//话不多说//参考代码如下//只要解决问题就好
    function Calc(mStartDate, mEndDate: TDate; mStrings: TStrings): Boolean;
    var
      vYear, vMonth, vDay: Word;
      vYear1, vMonth1: Word;
      I: Integer;
    begin
      Result := False;
      if not Assigned(mStrings) then Exit;
      DecodeDate(mStartDate, vYear, vMonth, vDay);
      if not (vMonth in [1, 4, 7, 10]) then Exit;
      DecodeDate(mEndDate, vYear1, vMonth1, vDay);
      if ((vYear1 - vYear) * 12 + (vMonth1 - vMonth) + 1) mod 3 <> 0 then Exit;
      mStrings.Clear;
      mStartDate := EncodeDate(vYear, 1, 1);
      while mStartDate <= mEndDate do begin
        for I := 1 to 3 do
          mStrings.Add(Format('%s-%s', [
            FormatDateTime('yyyy"-"m"-"d', mStartDate),
            FormatDateTime('yyyy"-"m"-"d', IncMonth(mStartDate, 3) - 1)]));
        mStartDate := IncMonth(mStartDate, 3);
      end;
      Result := True;
    end;procedure TForm1.Button1Click(Sender: TObject);
    var
      R1, R2: TDate;
    begin
      R1 := StrToDate('2002-1-1');
      R2 := StrToDate('2003-3-21');
      Calc(R1, R2, Memo1.Lines);
    end;