Q&A

  • 일수계산 좀 알려주세요...
안녕하세요.
왜 1년 365일의 일수를 셈하는 알고리즘 좀 알려주십시요.
예를들면 62일하면 3월 3일 하고 나오는 것 말이죠
줄리안 데이트라고 하던가요? 아무리 검색해도 없네요... ㅠ.ㅠ
부탁드립니다.
3  COMMENTS
  • Profile
    KDDG_BaSTaD 2003.05.02 20:46

    ==>  윤년  SysUtils.IsLeapYear(Year: Word): Boolean; 입니다...
    구현은 아래처럼...(4의 배수이고, 100의 배수가 아니거나 또는 400의 배수임)

    function IsLeapYear(Year: Word): Boolean;
    begin
      Result := (Year mod 4 = 0) and ((Year mod 100 <> 0) or (Year mod 400 = 0));
    end;

    일/월/년 에 대한 함수는 DateUtils에 있습니다..
    간단히 예를 들면.. 이런것들이죠.. Help를 보시면 충분히 이해하실 수 있습니다..

    DateUtils.EndOfTheMonth();
    DateUtils.DayOfTheMonth();
    DateUtils.WeekOfTheMonth();
    ....

    ps. 달력 컴포넌트를 만들다가 찾아봤네욤 (_ _); 즐프하세욤..
  • Profile
    김경록 2003.05.02 06:01
    흠.. 문제에 답변만 한다면,

    원하는 년도/월/일 + 일수 = 원하는 날짜
    이렇게 되는데

    코딩으로 예를 들면,

    Var
         ldt_Date: TDate;
         ll_AddDate: Integer;
    Begin
          ll_AddDate := 62; //날짜를 알고 싶은 일수를 대입한다.
          ldt_Date := StrToDate('2003-01-01'); //알고자하는 년도의 1월 1일
          ldt_Date := ldt_Date + ll_AddDate;

          ShowMessage(FormatDateTime('YYYY-MM-DD', ldt_Date));
    End;

    위와 같이해도 나올텐데..
    줄리언 날짜 계산법을 꼭 써야 하나여?
    윤달도 꼭 계산해야 하나여?
    윤달도 계산할 필요가 없을텐데..
    일자를 가지고 계산하면, 맞게 나옵니다..



  • Profile
    이강석 2003.05.02 03:59
    먼저 안녕하세요?
    질문이 약간 틀린거 같네염..
    몇년도에 몇번째 날이라고 해야할거 같네염..
    왜냐하면...
    365일이 아닌 년도도 존재하니깐염..
    윤년이라는 거 아시져?
    그것만 유념하시면...
    다른 달은 정해진 날짜가 항상 같은니깐..
    계산이 되겠져..
    1월 - 31
    2월 - ??
    .
    .
    .
    12월 - 31

    윤년인지 아닌지만 알면...
    인덱스처럼 해당일 넣어서...
    만들수 있겠져...
    글쳐...
    참고로....
    윤년구하는 알고리즘은 아무데에서나 검색할 수 있습니다..
    해본지 오래되서 까먹은데..암튼 나누는 조건이 3개인거 기억나는군여..
    쩌업...그래서 즐프하세염.