머리 싸메고 고생하시지 말고 ..
StrToDateTime() 함수 이용해서 일단 TDateTime형으로 변환 하셔서
MilliSecondsBetween() 함수나 SecondsBetween() 같은 편리한 함수들을 이용하세요.
위 두 함수 헬프로 찍어 보시면 시간/날짜 관련 편리한 함수들이 "date/time routines" 카테고리 안에
줄줄줄 있습니다. ^^;
장성호 님이 쓰신 글 :
: StrToDateTime이라는 함수로 string을 TDateTime으로 변환이 가능합니다.
:
:
: void __fastcall TForm1::Button1Click(TObject *Sender)
: {
: AnsiString strTime[2];
:
: strTime[0] = FormatDateTime("YYYY-MM-DD AM/PM HH:NN:SS:ZZZ", Now());
:
: Sleep(1345);
:
: strTime[1] = FormatDateTime("YYYY-MM-DD AM/PM HH:NN:SS:ZZZ", Now());
:
: TDateTime dt[2];
:
: dt[0]=StrToDateTime(strTime[0]);
: dt[1]=StrToDateTime(strTime[1]);
:
: String s=FormatDateTime("YYYY-MM-DD hh:nn:ss ZZZ",(TDateTime)(dt[1].Val - dt[0].Val));
: ShowMessage(s);
: }
:
:
:
: 그런데 테스트해보시면 아시겠지만
: 미리세크(ms)는 제대로 안됩니다.
:
: 그럼..
:
: Programmer 님이 쓰신 글 :
: : 이미 파일에 기록이 되어있는 상태라...
: : 이 포맷대로... FormatDateTime("YYYY-MM-DD AM/PM HH:NN:SS:ZZZ", Now());
: :
: : 그래서 이 엑셀파일에 기록되어 있는 2셀의 시간을 읽어와서 연산이 가능한가 싶어서요...
: :
: : Nibble 님이 쓰신 글 :
: : : TDateTime 타잎은 내부적으로 double 형이므로,
: : :
: : : double begin = (double)Now();
: : : Sleep(1000);
: : : double end = (double)Now();;
: : : AnsiString str = FormatDateTime("YYYY-MM-DD AM/PM HH:NN:SS:ZZZ",(TDateTime)(end - begin));
: : : 하시면 됩니다.
: : :
: : : 짧은 시간차를 구하시는거라면,
: : : #include <mmsystem.h>
: : : DWORD begin = timeGetTime();
: : : Sleep(1000);
: : : DWORD end = timeGetTime();
: : : AnsiString str = AnsiString(end - begin) + " msecs";
: : :
: : : 처럼 하시는게 더 나을것 같습니다.
: : :
: : : Programmer 님이 쓰신 글 :
: : : : AnsiString strTime[2];
: : : :
: : : : strTime[0] = FormatDateTime("YYYY-MM-DD AM/PM HH:NN:SS:ZZZ", Now());
: : : :
: : : : Sleep(1000);
: : : :
: : : : strTime[1] = FormatDateTime("YYYY-MM-DD AM/PM HH:NN:SS:ZZZ", Now());
: : : :
: : : : 위의 두 시간차를 구하고 싶은데... strTime[1] - strTime[0]
: : : :
: : : : 가능한가요.