Q&A

  • 2월 마지막 날짜가 28인지 29인지 알수 있는방법?
try except 를 써서 하는 방법 말고 바로 알수 있는 방법 있나여?

윤달 계산하는 것에서 나오는거 같던데여..

3  COMMENTS
  • Profile
    바람개비 2001.03.24 20:17
    편법이랄수도 있겠고...

    3월1일에서 하루를 빼버리면 되지여.



    myDate:=encodeDate(2001,3,1)-1;

    Decodedate(mydate,year,month,myday);



    바라미~

    수니 wrote:

    > try except 를 써서 하는 방법 말고 바로 알수 있는 방법 있나여?

    > 윤달 계산하는 것에서 나오는거 같던데여..

  • Profile
    윤광석 2001.03.24 20:08


    // 윤년 체크

    function IsLeapYear(AYear: Integer): Boolean;

    begin

    Result := (AYear mod 4 = 0) and ((AYear mod 100 <> 0) or (AYear mod 400 = 0));

    end;

    // 그 달에 마지막 일 리턴

    function DaysPerMonth(AYear, AMonth: Integer): Integer;

    const

    DaysInMonth: array[1..12] of Integer = (31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);

    begin

    Result := DaysInMonth[AMonth];

    if (AMonth = 2) and IsLeapYear(AYear) then Inc(Result); { leap-year Feb is special }

    end;





    수니 wrote:

    > try except 를 써서 하는 방법 말고 바로 알수 있는 방법 있나여?

    > 윤달 계산하는 것에서 나오는거 같던데여..

  • Profile
    kylix 2001.03.24 20:06
    IsLeapYear함수를 써서 그 해가 윤년인지를 보시면 되죠. 윤년이면 29일이겠죠...



    var

    D: TDate;

    Year, Month, Day: Word;

    begin

    D := Date; // 오늘의 날짜를 구하기.

    DecodeDate(Date, Year, Month, Day); // 년,월,일 분리하기.

    if IsLeapYear(Year) then // 윤년이면

    ShowMessage('2월은 29일까지 잇습니다.')

    else

    ShowMessage('2월은 28일까지 잇습니다.')

    end;



    수니 wrote:

    > try except 를 써서 하는 방법 말고 바로 알수 있는 방법 있나여?

    > 윤달 계산하는 것에서 나오는거 같던데여..