안녕하세요.
정성훈.해미입니다.
TDateTime에서 0은 기준이되는 특정 날짜를 의미합니다.
1899년 12월 30일 0시.
TDateTiem의 내부를 보면 값이 double로 저장됩니다.
0, 1.23, 40536등등 이런식으로
이것을 0일때 정해진 날짜로보고 거기서부터 계산해서 우리가 보는 날짜로 보이게 됩니다.
그래서 다음의 0부분은 몇일을 의미하는 것이 아닙니다.
DaysBetween(MyDateTime,0)) 은 다르게 표현하면
DaysBetween(MyDateTime, TDateTime("1899-12-30 00:00:00")); 이 됩니다.
40536 가 나온 것은
(2011년 01월 21일) - (1899년 12월 30일)을 해서 나온 것입니다.
아래에 TDateTime에 대한 좀 더 자세한 설명이 있으니 참고하세요.
http://docwiki.embarcadero.com/VCL/en/System.TDateTime
차범석 님이 쓰신 글 :
: 정성훈.해미니 답변해주셔서 감사합니다^^
:
: 제가,,
:
:
: //---------------------------------------------------------------------------
:
: #include <DATEUTILS.HPP>
: #include <vcl.h>
: #pragma hdrstop
:
: #include "Unit1.h"
: //---------------------------------------------------------------------------
: #pragma package(smart_init)
: #pragma resource "*.dfm"
: TForm1 *Form1;
: //---------------------------------------------------------------------------
: __fastcall TForm1::TForm1(TComponent* Owner)
: : TForm(Owner)
: {
: }
: //---------------------------------------------------------------------------
: void __fastcall TForm1::Button1Click(TObject *Sender)
: {
: int D_Day;
: TDateTime MyDateTime;
: unsigned short py,pm,pd;
: MyDateTime = Now();
: MyDateTime.DecodeDate(&py,&pm,&pd);
: Edit1->Text=(IntToStr(py)+"년"+IntToStr(pm)+"월"+IntToStr(pd)+"일");
:
:
: TDateTime ReserveDT;
: Edit3->Text=(D_Day = DaysBetween(MyDateTime,0));
:
: }
: //---------------------------------------------------------------------------
:
: 이렇게 소스를 쳤는데요..
:
: 이제 Edit1에다가 오늘의 날짜가 나오구
: EDIT2 에다가는 임의로 제가 날짜를 써놓았구요(2011년12월31일)
: EDIT3에다가는 남은 일수를 나오게 하려는데요..
: 저기 위에 처럼 하니까,. 40564 가 나오네요;;
: 모가 잘못된건지.. 답변 부탁드려요 ㅠㅠ
: 맨 밑에가 잘못된거 같기도 하구.. 잘모르겠어요ㅠㅠ 도와주세요~~ㅠㅠ
: 맨밑에(MyDateTime, 0 ) 이거 있자나요..
: 마이데이트타임이.... 오늘의 날짜고..
: 뒤에 0 은 임의 대로 써놓은건데요.. 그럼 365-0 = 365가 나오는게 맞지 않나요??
: 근데 40564가 나오네요ㅠㅠ
: 도와주세요..ㅜㅜ