Q&A

  • 두 날짜사이의 달수 계산하기
안녕하세요.

초보라 어려움이 많아 고수님들께 질문을 드립니다.

두날짜사이의 달수를 계산하고 싶어요



예) '2001-03-01' - '1999-11-01' = 17개월



뺄셈 제대로 했죠? 이렇게 하고 싶어요



고수님들 도움을 부탁드립니다.



다른 컴포넌트 쓰지말고 코딩으로요...



헤헤 그럼 잘 부탁드립니다.

5  COMMENTS
  • Profile
    이진수 2001.03.06 06:39
    전체 소스 입니다.



    근데.. 델초보님

    답변 해주신 분한테, 공부좀 더하라는 말은 좀 심한듯 합니다.

    그분은 나름대로 시간을 내서 답변을 한건데 말씀입니다.



    procedure TForm1.Button1Click(Sender: TObject);

    var

    d1, d2: TDateTime;

    begin

    d1 := strtodate('1999-11-01');

    d2 := strToDate('2001-03-01');

    showmessage(intToStr(GetMonthNumBetweenDate(d1, d2)));

    end;



    function TForm1.GetMonthNumBetweenDate(const Date1, Date2 : TDateTime): integer;

    var

    tempDate : TDateTime;

    MonthBetween : integer;

    Year, Month, Day : word;

    AddDayNum : integer;

    const DayNum : array[1..12] of integer = (31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);



    begin

    tempDate := Date1;

    MonthBetween := 0;



    while ( tempDate <= Date2 ) do

    begin

    DecodeDate(tempDate, Year, Month, Day);

    if ( (Month = 2) and (IsLeapYear(Year)) ) then

    begin

    AddDayNum := 29;

    end

    else

    begin

    AddDayNum := DayNum[Month];

    end;

    tempDate := tempDate + AddDayNum;

    MonthBetween := MonthBetween+1;

    end;

    Result := MonthBetween;

    end;

    end.





    델초보 wrote:

    > 안녕하세요.

    > 초보라 어려움이 많아 고수님들께 질문을 드립니다.

    > 두날짜사이의 달수를 계산하고 싶어요

    >

    > 예) '2001-03-01' - '1999-11-01' = 17개월

    >

    > 뺄셈 제대로 했죠? 이렇게 하고 싶어요

    >

    > 고수님들 도움을 부탁드립니다.

    >

    > 다른 컴포넌트 쓰지말고 코딩으로요...

    >

    > 헤헤 그럼 잘 부탁드립니다.

  • Profile
    Larson 2001.03.05 22:07
    델초보 wrote:

    > 안녕하세요.

    > 초보라 어려움이 많아 고수님들께 질문을 드립니다.

    > 두날짜사이의 달수를 계산하고 싶어요

    >

    > 예) '2001-03-01' - '1999-11-01' = 17개월

    >

    > 뺄셈 제대로 했죠? 이렇게 하고 싶어요

    >

    > 고수님들 도움을 부탁드립니다.

    >

    > 다른 컴포넌트 쓰지말고 코딩으로요...

    >

    > 헤헤 그럼 잘 부탁드립니다.



    참고하세요.



    procedure TForm1.Button1Click(Sender: TObject);

    var

    d1, d2, d3: TDateTime;

    begin

    d1 := strToDate(edit1.text);

    d2 := strtodate(edit2.text);

    d3 := d2-d1;

    showmessage('차이는 ' + formatdatetime('mm', d3) + '개월');

    end;

  • Profile
    델초보 2001.03.05 22:46
    > procedure TForm1.Button1Click(Sender: TObject);

    > var

    > d1, d2, d3: TDateTime;

    > begin

    > d1 := strToDate(edit1.text);

    > d2 := strtodate(edit2.text);

    > d3 := d2-d1;

    > showmessage('차이는 ' + formatdatetime('mm', d3) + '개월');

    > end;



    이렇게 하면 17개월이 아니라 8개월이 된다는 사실을 님은 아십니까?

    확인해 보고 써야죠... 저도 이정도는 압니다.

    죄송하지만 공부를...

  • Profile
    Larson 2001.03.05 23:33
    델초보 wrote:

    > > procedure TForm1.Button1Click(Sender: TObject);

    > > var

    > > d1, d2, d3: TDateTime;

    > > begin

    > > d1 := strToDate(edit1.text);

    > > d2 := strtodate(edit2.text);

    > > d3 := d2-d1;

    > > showmessage('차이는 ' + formatdatetime('mm', d3) + '개월');

    > > end;

    >

    > 이렇게 하면 17개월이 아니라 8개월이 된다는 사실을 님은 아십니까?

    > 확인해 보고 써야죠... 저도 이정도는 압니다.

    > 죄송하지만 공부를...



    이정도의 힌트를 드렸으면 님도 약간의 노력을 기울여서 해결해야죠.

    날로 먹을려구 하면 안될텐데.....



    약간만 응용하면 금방 나올텐데....



    죄송하지만 공부를....





  • Profile
    이제관 2001.03.05 19:29
    년을 날짜로 환산해 보세요. 1년은 365일 이니까 환산한 값으로 뺀후 몫만 취하고 나머지는 버립니다.



    주의사항 : 윤년계산을 하세요.

    ----------------------------------------------------------------------------------

    델초보 wrote:

    > 안녕하세요.

    > 초보라 어려움이 많아 고수님들께 질문을 드립니다.

    > 두날짜사이의 달수를 계산하고 싶어요

    >

    > 예) '2001-03-01' - '1999-11-01' = 17개월

    >

    > 뺄셈 제대로 했죠? 이렇게 하고 싶어요

    >

    > 고수님들 도움을 부탁드립니다.

    >

    > 다른 컴포넌트 쓰지말고 코딩으로요...

    >

    > 헤헤 그럼 잘 부탁드립니다.



    • 델초보
    • 2001.03.05 18:50
    • 5 COMMENTS
    • /
    • 0 LIKES
    • 이진수
      2001.03.06 06:39
      전체 소스 입니다. 근데.. 델초보님 답변 해주신 분한테, 공부좀 더하라는 말은 좀 심한듯 합니다. 그...
    • Larson
      2001.03.05 22:07
      델초보 wrote: > 안녕하세요. > 초보라 어려움이 많아 고수님들께 질문을 드립니다. > 두날짜사이의 달...
    • 델초보
      2001.03.05 22:46
      > procedure TForm1.Button1Click(Sender: TObject); > var > d1, d2, d3: TDateTime; > begin > d...
    • Larson
      2001.03.05 23:33
      델초보 wrote: > > procedure TForm1.Button1Click(Sender: TObject); > > var > > d1, d2, d3: TDate...
    • 이제관
      2001.03.05 19:29
      년을 날짜로 환산해 보세요. 1년은 365일 이니까 환산한 값으로 뺀후 몫만 취하고 나머지는 버립니다. ...
    • 준초보
    • 2001.03.05 18:13
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 하눌이
      2001.03.05 19:52
      준초보 wrote: > 일반적으로 실행파일이 아규먼트를 받아 초기 실행할 수 있는데요 > 델파이에서는 어떻...
    • 엉망이
    • 2001.03.05 06:18
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 권민호
      2001.03.05 19:05
      엉망이 wrote: > 클라이언트쪽에서 서버측 프로바이더에 sql문을 넘겨 서버에서는 request뭐더라? 하여간 ...
    • 엉망이
      2001.03.05 20:50
      권민호 wrote: > 엉망이 wrote: > > 클라이언트쪽에서 서버측 프로바이더에 sql문을 넘겨 서버에서는 req...
    • ^**^!~
    • 2001.03.05 06:06
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 이진수
      2001.03.05 21:09
      흠... 이건 데이터베이스 관련 질문 아닌데 ... 어쨌건, 에러의 원인은 여러가지겠네요 만일 Delphi4...
    • ^**^~!
      2001.03.05 23:20
      델파이4에서는 ado컴포넌트를 사용을 안했거든요..... 글구 님이 말씀하신것도 에러가 나구... 좀더 자세...
    • 이진수
      2001.03.06 06:41
      음... 그렇게만 질문하시면 암것도 해드릴 수가 없네요. 뭐가 어떻게 에러가 난다. 라든지 에러 메세지가...
    • 김현덕
    • 2001.03.05 03:23
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 이진수
      2001.03.05 11:42
      Form을 Auto Create한다는 의미는 프로그램 로딩될 시 폼을 자동생성하여 메모리에 올려놓고, 나중에 그 것...
    • kylix
      2001.03.05 03:35
      프로젝트에서 한두개의 폼만을 사용한다면 별 상관이 없겠죠... 하지만 수십개의 폼을 사용한다 할때 그...
    • 김현덕
    • 2001.03.05 00:42
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 이진수
      2001.03.05 20:36
      안녕하세요 이진수입니다. 볼까요? 밑에 분 말도 맞긴한데요 다시 한번 정리해볼께요 델파이는 Modu...
    • 감초
      2001.03.05 02:23
      이것은 실제로 델파이 이전에 파스칼 초보자들에게는 아주 중요한 문제입니다. Cross Reference문제라고도...
    • 이명학
    • 2001.03.05 01:31
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 하눌이
      2001.03.05 19:54
      이명학 wrote: > > MDB와 오라클을 서로 Import/Export를 이용하는 루틴을 이용하고 있습니다. > 우선 ...
    • 이명학
      2001.03.05 20:40
      하눌이 wrote: > 이명학 wrote: > > > > MDB와 오라클을 서로 Import/Export를 이용하는 루틴을 이용하...
    • 까망^^;
      2001.04.13 22:52
      신제훈 wrote: > 있을까여 ? > 모든 이벤트를 다 써봤지만 그 이벤트는 못 잡는군여.. > 허허 > 참...
    • 이진수
      2001.03.05 12:04
      에고 제가 게을러서요 걍 설명 드릴께요 ^^ 우선 한페이지에 모든걸 출력시키시려면 StretchDraw란게 있...
    • 초보짱
    • 2001.03.04 10:34
    • 5 COMMENTS
    • /
    • 0 LIKES
    • 도지성
      2001.03.05 18:55
      초보짱 wrote: > 제가 이번에 벽돌 깨기를 만들려구 하는데여.... > 공이 벽돌 혹은 벽에 맞구 튕길때 각...
    • kylix
      2001.03.05 04:55
      흠~~~ 기본적인거는 입사각과 반사각이 같다는 거겠죠... 밑에 조종하는 패널에 맞을땐 조종하는 패널의...
    • 초보짱
      2001.03.05 05:06
    • kylix
      2001.03.05 08:04
      그게 어떻게 90도가 돼나여??? 그럼 수직으로 입사하면 수평으로 날아가나여??? x축을 향하여 입사할때 ...
    • 초보짱
      2001.03.04 13:36
    • 김현덕
    • 2001.03.04 07:13
    • 1 COMMENTS
    • /
    • 0 LIKES
    • kylix
      2001.03.04 08:26
      검색해봐여~~~ SringReplace로... 김현덕 wrote: > 안녕하세요 > 보통 금액에 붙는 , 만 삭제하고...
    • 토끼탕
    • 2001.03.04 04:04
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 김진호
      2001.03.04 04:19
      토끼탕 wrote: > 안녕하세요.. 다이렉트X를 이용해서 만들어진 소스를 받아서 분석해보고 있는데요.. 이거...
    • 이승근
    • 2001.03.04 00:58
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 김일영
      2001.03.04 00:58
      ShowModal로 띄우고자 하시는 form의 Visible을 False로 바꿔 놓으세요. ============================...