假設某種高級語言中,日期類型的變量可以通過加減來直接計算(比如變量 a 的值表示2005-01-01日,將其加 1 則其值變成2005-01-02)。而且系統提供了函數GetDate(iYear, iMonth, iDay: Int),它返回由傳入的整型參數構造出來的日期值。請用delphi語言編寫一個函數,用以返回某年2月分的最後一天的日期(請使用上述兩個條件)

解决方案 »

  1.   

    function ABC(y:integer): TDate;
    begin 
      result := GetDate(某年, 2, 28);
      if (result + 1) <> GetDate(某年, 3, 1) then
        result := GetDate(某年, 2, 29);
    end;
      

  2.   


    uses DateUtils;function GetDate(iYear, iMonth, iDay: Integer): Integer;
    var
      d: TDateTime;
    begin
      d := EncodeDateTime(iYear, iMonth, iDay, 0, 0, 0, 0);
      Result := DayOf(EndOfTheMonth(d))
    end;
      

  3.   


    function TFMBase.GetDate(strDate:TDateTime):string ;
    var
      sDate :string ;
      sYear,sMonth,sDay :string ;
    begin
      sDate :=DateToStr(strDate) ;
      sYear :=copy(sDate,0,pos(DateSeparator,sDate)-1);
      if length(sYear)=2 then
         sYear :='20' + sYear ;  sDate :=copy(sDate,pos(DateSeparator,sDate)+1,length(sDate));
      sMonth :=copy(sDate,0,pos(DateSeparator,sDate)-1);
      if length(sMonth)=1 then
         sMonth :='0' + sMonth ;  sDay :=copy(sDate,pos(DateSeparator,sDate)+1,length(sDate));
      if length(sDay)=1 then
         sDay :='0' + sDay ;  result :=sYear+DateSeparator+sMonth+DateSeparator+sDay;
    end ;
      

  4.   


    VAR
      DT: TDateTime;
    begin
      if TryEncodeDate(2010,2,30,DT) then showmessage(formatdatetime('YYYY-MM-DD',DT))
      else begin
        DT:= EndOfTheMonth(EncodeDate(2010,2,1));
        showmessage(formatdatetime('YYYY-MM-DD',DT));
      end
    end;
      

  5.   


    procedure TForm1.Button1Click(Sender: TObject);
      function  GetDate(iYear, iMonth, iDay: Integer): TDateTime;
      begin
      if not TryEncodeDate(iYear,iMonth,iDay,Result) then
        Result:= EndOfTheMonth(EncodeDate(iYear,iMonth,1));
      end;
    begin
      showmessage(formatdatetime('YYYY-MM-DD',GetDate(2010,2,30)));
    end;