Q&A

  • 날짜 횟수(일)구하기
급해여~ ㅜ.ㅜ
여기저기 다 찾아봐도...
월/일~월/일 입력시 횟수(일)를 구하는 프로그램 좀 갈켜주세여~

예 ) 02/01 ~ 03/10  => 38일

꼭 좀여~
3  COMMENTS
  • Profile
    버섯 2002.01.28 21:16


    간단한거..

    date1 := strtodate('2001-02-01');
    date2 := strtodate('2001-03-10');

    ii := trunc(date2 - date1);

  • Profile
    김영대 2002.01.28 20:33
    function DateSer(y, m, d: Integer): TDateTime;
    const
      mj: array[1..12] of Integer=(31,28,31,30,31,30,31,31,30,31,30,31);
    var
      add: Integer;
    begin
    While (true) do
    begin
       y := y + (m-1) div 12;
       m := (m-1) mod 12 +1;

       if m <= 0 then
       begin
         Inc(m, 12);
         Dec(y);
       end;

       if ((y mod 4 = 0) and
          ((y mod 100 <> 0) or (y mod 400 = 0))) and
          (m = 2)
       then
         add:=1 //add one day in February
       else
         add:=0;

       if (d > 0) and (d <= (mj[m] + add)) then
         break;
       if d > 0 then
       begin
         Dec(d, mj[m]+add);
         Inc(m);
       end
       else
       begin
         Inc(d, mj[m]+add);
         Dec(m);
       end;
    end;
    Result := EncodeDate(y, m, d);
    end;


    // 사용예제
    DecodeDate(Date, y, m, d);
    NewDate := DateSer(y-4, m+254, d+1234);

  • Profile
    김영대 2002.01.28 20:32

    unit Unit1;

    interface

    uses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
      StdCtrls;

    type
      TDayOfWeek = (Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday);

    type
      TForm1 = class(TForm)
      private
        { Private declarations }
      public
        { Public declarations }
        function dateYear(D: TDateTime): Integer;
        function dateMonth(D: TDateTime): Integer;
        function dateDay(D: TDateTime): Integer;
        function dateBeginOfYear(D: TDateTime): TDateTime;
        function dateEndOfYear(D: TDateTime): TDateTime;
        function dateBeginOfMonth(D: TDateTime): TDateTime;
        function dateEndOfMonth(D: TDateTime): TDateTime;
        function dateWeekOfYear(D: TDateTime): Integer;
        function dateDayOfYear(D: TDateTime): Integer;
        function dateDayOfWeek(D: TDateTime): TDayOfWeek;
        function dateLeapYear(D: TDateTime): Boolean;
        function dateBeginOfQuarter(D: TDateTime): TDateTime;
        function dateEndOfQuarter(D: TDateTime): TDateTime;
        function dateBeginOfWeek(D: TDateTime;Weekday: Integer): TDateTime;
        function dateDaysInMonth(D: TDateTime): Integer;
      end;

    var
      Form1: TForm1;

    implementation
    {$R *.DFM}

    // 날짜의 년도만 발취
    function TForm1.dateYear(D: TDateTime): Integer;
    var
      Year, Month, Day: Word;
    begin
      DecodeDate(D, Year, Month, Day);
      Result := Year;
    end;

    // 날짜의 월만 발취
    function TForm1.dateMonth(D: TDateTime): Integer;
    var
      Year, Month, Day: Word;
    begin
      DecodeDate(D, Year, Month, Day);
      Result := Month;
    end;

    // 날짜의 일만 발취
    function TForm1.dateDay(D: TDateTime): Integer;
    var
      Year,Month,Day : Word;
    begin
      DecodeDate (D,Year,Month,Day);
      Result := Day;
    end;

    // 년의 시작일자
    function TForm1.dateBeginOfYear(D: TDateTime): TDateTime;
    var
      Year, Month, Day: Word;
    begin
      DecodeDate(D, Year, Month, Day);
      Result := EncodeDate(Year, 1, 1);
    end;

    // 년의 마지막일자
    function TForm1.dateEndOfYear(D: TDateTime): TDateTime;
    var
      Year, Month, Day: Word;
    begin
      DecodeDate(D, Year, Month, Day);
      Result := EncodeDate(Year, 12, 31);
    end;

    // 월의 시작일자
    function TForm1.dateBeginOfMonth(D: TDateTime): TDateTime;
    var
      Year, Month, Day: Word;
    begin
      DecodeDate(D, Year, Month, Day);
      Result := EncodeDate(Year, Month, 1);
    end;

    // 월의 마지막일자
    function TForm1.dateEndOfMonth(D: TDateTime): TDateTime;
    var
      Year, Month, Day: Word;
    begin
      DecodeDate(D, Year, Month, Day);
      if Month = 12 then
      begin
        Inc(Year);
        Month := 1;
      end
      else
        Inc(Month);

      {월의 다음월의 시작일에서 1을 뺀다}
      Result := EncodeDate(Year, Month, 1) - 1;
    end;

    // 년을 기준으로 몇번째 주인지
    function TForm1.dateWeekOfYear(D: TDateTime): Integer;
    const
      t1: array[1..7] of ShortInt = ( -1,  0,  1,  2,  3, -3, -2);
      t2: array[1..7] of ShortInt = ( -4,  2,  1,  0, -1, -2, -3);
    var
      doy1, doy2: Integer;
      NewYear: TDateTime;
    begin
      NewYear := dateBeginOfYear(D);
      doy1 := dateDayofYear(D) + t1[DayOfWeek(NewYear)];
      doy2 := dateDayofYear(D) + t2[DayOfWeek(D)];
      if doy1 <= 0 then
        Result := dateWeekOfYear(NewYear-1)
      else if (doy2 >= dateDayofYear(dateEndOfYear(NewYear))) then
        Result:= 1
      else
        Result:=(doy1-1) div 7+1;
    end;

    // 년을 기준으로 몇번째 일인지
    function TForm1.dateDayOfYear(D: TDateTime): Integer;
    begin
      Result := Trunc(D-dateBeginOfYear(D)) + 1;
    end;

    // 요일 번호
    function TForm1.dateDayOfWeek(D: TDateTime): TDayOfWeek;
    begin
      Result := TDayOfWeek(Pred(DayOfWeek(D)));
    end;

    // 윤년인지 검사
    function TForm1.dateLeapYear(D: TDateTime): Boolean;
    var
      Year, Month, Day: Word;
    begin
      DecodeDate(D, Year, Month, Day);
      // 100으로 나누어 떨어지고 400으로 나누어 떨어지지 않는 연도를 제외한
      // 매 4년마다 한 번씩 더 많게 되거나 윤년이 된다
      Result := (Year mod 4 = 0) and ((Year mod 100 <> 0) or (Year mod 400 = 0));
    end;

    // 주어진 일자가 포함된 분기의 시작일
    function TForm1.dateBeginOfQuarter(D: TDateTime): TDateTime;
    var
      Year, Month, Day: Word;
    begin
      DecodeDate(D, Year, Month, Day);
      Result := EncodeDate(Year, (((Month-1) div 3) * 3)+1, 1);
    end;

    // 주어진 일자가 포함된 분기의 마지막일
    function TForm1.dateEndOfQuarter(D: TDateTime): TDateTime;
    begin
      Result := dateBeginOfQuarter(dateBeginOfQuarter(D)+(3*31)) - 1;
    end;

    // 주의 시작일
    function TForm1.dateBeginOfWeek(D: TDateTime; Weekday: Integer): TDateTime;
    begin
      Result := D;
      while DayOfWeek(Result) <> Weekday do
        Result := Result - 1;
    end;

    // 월의 마지막 일
    function TForm1.dateDaysInMonth(D: TDateTime): Integer;
    const
      DaysPerMonth: array[1..12] of Byte= (31,28,31,30,31,30,31,31,30,31,30,31);
    var
      Month: Integer;
    begin
      Month := dateMonth(D);
      Result := DaysPerMonth[Month];
      if (Month=2) and dateLeapYear(D) then
        Inc(Result);
    end;

    end.

    • 라민웁
    • 2002.01.28 23:55
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 김영대
      2002.01.29 02:13
      제가 가지고 있던 자료인데 한번 해보세요 예제를 작성해 보지를 못해서 맞는지 모르겠습니다 잘 되면 리...
    • 라민웁
      2002.01.29 04:38
      영대님께서 보내주신 것은 이전부터 계속테스트 했는데. DateTimeToUNIXTime 이게 문제 가 되더군요.. 비슷...
    • 이승근
    • 2002.01.28 22:32
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 배건환
      2002.01.29 03:31
      Detail Band에 QRSysData컴포넌트를 올립니다. 그리고, 컴포넌트속성에 Data에 보면 'qrsDetailNo'을 선...
    • 이승근
      2002.01.29 23:24
      답변처럼 했는데 안되서 질문을 올린다니깐요.... qrsdetailno를 사용해서 안되길래 물어보니 qrsdetailco...
    • 이승근
    • 2002.01.28 22:29
    • 4 COMMENTS
    • /
    • 0 LIKES
    • 배건환
      2002.01.29 03:27
      테이블에 대한 상세 필드나 ERD를 알고싶네요.*^^*
    • 이승근
      2002.01.29 23:28
      erd는 뭔지 모르겠구요... 테이블(paradox)에 대한 상세필드는 거래처.db 코드   &n...
    • 배건환
      2002.01.30 01:10
      이해가 잘 안 되네요. 이 두개의 테이블로 보면... Select b.거래처코드, a.상호, b.품목코드, Sum(b...
    • 황선웅
      2002.01.29 23:57
      우선 죄송합니다만 제가 질문의 요지를 잘 모르겠군요. 어쨌든 제가 이해하자는데로 쓰자면 우선 ...
    • 나원용
    • 2002.01.28 21:51
    • 1 COMMENTS
    • /
    • 0 LIKES
    • gudwhrla
      2002.01.28 23:08
      Type    TCrackDBNi=class(TDBNavigator); procedure TForm1.Button1Click(Sender: TObjec...
    • 박준기
    • 2002.01.28 21:30
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 김영대
      2002.01.29 02:08
      아래글은 옛날에 제 홈페이지에 올렸었던 글인데 아직 남아있어서(?) 올립니다 PID 같은것은 아래데로 하...
    • 박준기
      2002.01.29 20:29
      많은 도움이 되었습니다. 어제는 하루종일 외근후에 들어와보니 친절하게 답변 해주셨네여... 좀더 공...
    • 김진선
    • 2002.01.28 21:30
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 황선웅
      2002.01.29 23:31
      Query Component에서 Master/Detail을 하려면 우선 Master Query 문을 써넣으시고. Datasource하나를 붙...
    • 델파이탐크루즈
      2002.01.29 00:33
      안녕하세요... 본래 마스터 / 디테일의 구조는 아시죠... 1 : 1 이상의 구조를 마스타 / 디테일 구조...
    • 김진선
      2002.01.29 21:19
      답변 정말 감사합니다. 근데요... 마스터/디테일 관계는 저두 조금은 알걸랑요. 제가 알고싶은것은 쿼리...
    • 최수림
    • 2002.01.28 21:22
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2002.01.28 21:30
      안녕하세요. 최용일입니다. 델파이의 SourceToolsAPI폴더에 보시면 DsgnIntf.pas파일이 있습니다. 같은...
    • 최수림
      2002.01.28 21:42
      ㅜ.ㅜ..죄송합니다..!! 지금 제가 쓰고있는 버전은 델파이 6입니다..!! DsgnIntf.pas파일을 검색해서 ...
    • 최용일
      2002.01.28 22:06
      델파이팁란에 원하시는 팁이 올라와 있습니다. 참조하세요...
    • 김성현
    • 2002.01.28 20:37
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 우혜정
    • 2002.01.28 20:29
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 버섯
      2002.01.28 21:16
      간단한거.. date1 := strtodate('2001-02-01'); date2 := strtodate('2001-03-10'); ii := trun...
    • 김영대
      2002.01.28 20:33
      function DateSer(y, m, d: Integer): TDateTime; const   mj: array[1..12] of Integer=(31,2...
    • 김영대
      2002.01.28 20:32
      unit Unit1; interface uses   Windows, Messages, SysUtils, Classes, Graphics, Cont...
    • 이창우
    • 2002.01.28 20:27
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 델파이탐크루즈
      2002.01.28 20:13
      안녕하세요... 에러 Access Vioation Errorr address FFFFF00d0d....은 99% 가 메모리 에러입니다....(...
    • 김영대
      2002.01.28 20:10
      The following example demonstrates creating a system wide windows hook under Win32. The example p...
    • 이명호
    • 2002.01.28 11:23
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2002.01.28 22:10
      안녕하세요. 최용일입니다. 트랙바의 OnKeyDown이벤트에서 Up, Down키를 막으세요... procedure TFor...
    • 이은호
    • 2002.01.28 06:44
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 전영민
      2002.01.29 00:42
      저도 초보라서 궁금하죠. 헌데 서버의 자원을 불필요하게 쓰시는게 걸리신다면 rds를 함 써 보심이 어떨...
    • 강동순
    • 2002.01.28 05:11
    • 1 COMMENTS
    • /
    • 0 LIKES
    • gudwhrla
      2002.01.28 21:43
      procedure TFmacolorse.kg3KeyDown(Sender: TObject; var Key: Word;   Shift: TShiftState); ...
    • 조규춘
      2002.01.27 20:10
      www.freechal.com/delphiworld 에 들어가보셔요.. 그리고 소식지 자료실이라고 하는 곳에.. 그런...
    • 김상현
    • 2002.01.27 06:22
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 강두헌
      2002.01.27 09:16
      Delphi는 function과 procedure로 구분됩니다. function은 리턴값이 있는거구요. procedure는 리턴값이 ...