面试题目:  怎样才能实现日期的自动加1   如2002-10-20   变为   2002-10-21   但必须考虑不能出现2002-10-32或2002-13-10  等不正常的日期和是否是闰年等。    要求:1  年 月 日必须由三个参数输入;
         2  不能使用任何函数;  谁能给个例子啊!!!!

解决方案 »

  1.   

    直接就有个函数:
    function IncDay(const AValue: TDateTime;
      const ANumberOfDays: Integer = 1): TDateTime;

    DateUtils单元
      

  2.   

    DateTimePicker1.Date := DateTimePicker1.Date + 1;

    DateTimePicker1.Date := IncDay(DateTimePicker1.Date,1);
    两种方法道理一样,IncDay可以设置要增加的天数
      

  3.   

    看看这个行吧procedure TForm1.Button4Click(Sender: TObject);
    var
      year,mon,day,day1:Integer;
    begin
      year:=StrToInt(self.Edit1.Text);
      mon:=StrToInt(self.Edit2.Text);
      day:=StrToInt(self.Edit3.Text);
      day1:=day+1;
      if mon<>2 then
      begin
        case mon of
        1,3,5,7,8,10:begin
                          if day1>31 then
                          begin
                            mon:=mon+1;
                            day:=1;
                          end
                          else
                            day:=day1;
                     end;
        12:begin
             if day1>31 then
             begin
               year:=year+1;
               mon:=1;
               day:=1;
             end
             else
               day:=day1;
           end;
        4,6,9,11:begin
                   if day1>30 then
                   begin
                     mon:=mon+1;
                     day:=1;
                   end
                   else
                     day:=day+1;
                 end;
        end;
      end
      else
      begin
        if (Year mod 4 = 0) and ((Year mod 100 <> 0) or (Year mod 400 = 0)) then
        begin
          if day1>29 then
          begin
            mon:=3;
            day:=1
          end
          else
            day:=day1;
        end
        else
        begin
          if day1>28 then
          begin
            mon:=3;
            day:=1
          end
          else
            day:=day1;
        end;
      end;
      Self.Edit1.Text:=IntToStr(year);
      Self.Edit2.Text:=IntToStr(mon);
      Self.Edit3.Text:=IntToStr(day);
      self.Edit4.Text:=IntToStr(year)+'年'+inttostr(mon)+'月'+inttostr(day)+'日';
    end;
      

  4.   

    var
    dt:TDateTime;
    begin
      if TryStrToDateTime(年+月+日) then
      dt:=StrToDateTime(年+月+日)+1
      else
      ShowMessage('无效的日期格式');
    end;
      

  5.   

    你把Dateutils中VCL实现的函数重新给他复制一下,起个IncDay1!气死他