Delphi Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
델파이 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
FreePascal/Lazarus
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
델마당
볼랜드포럼 광고 모집

델파이 팁&트릭
Delphi Programming Tip&Tricks
[326] 파일 생성일자, 마지막 수정일자, 접근일자 구하기
첫눈 [hadugo] 5245 읽음    2014-12-12 14:38
매번 말씀 드리지만 전 개발자가 아닙니다.
개발과 관계 없는 업종에 근무하고 있고 다만 불편함을 해소하고자 잡다한 프로그램을 만들어 사용할 뿐입니다.
그러니 제가 올리는 소스코드는 문제가 있을 수도 있으니 검증하고 사용하세요.

이미 올라온 내용일 수도 있지만
파일의 생성일자,  마지막수정일자, 접근일자를 구해야 하는데
명령어 대로 처리를 하니 날자가 이상하게 나옵니다.

결국 인터넷을 뒤져가며 간신히 소스코드를 구해서 실행해 보니 시간이 아주 황당하게 나오네요.

몇시간을 허비하며 인터넷을 다시 뒤져 간신히 구했습니다.

어떻게 보면 당연한지 모르겠지만 파일 날자가 그리니치천문대 기준의 날자라 한국시간에 맞게 시간을 더하거나 빼야 하는데
그걸 몰라서 고생했네요.

혹시 저 처럼 파일 날자구하는데 시간이 황당하게 나온다 하는 분들 참고하세요.
제가 만든게 아니고 구글링해서 얻은 소스 그대로 올립니다.

function GetFileTimes(const FileName: string; var Created, Accessed, Modified: TDateTime): Boolean;
var
   h: THandle;
   Info1, Info2, Info3: TFileTime;
   SysTimeStruct: SYSTEMTIME;
   TimeZoneInfo: TTimeZoneInformation;
   Bias: Double;
begin
   Result := False;
   Bias := 0;
   h := FileOpen(FileName, fmOpenRead or fmShareDenyNone);
   if h > 0 then
   begin
     try
       if GetTimeZoneInformation(TimeZoneInfo) <> $FFFFFFFF then
         Bias := TimeZoneInfo.Bias / 1440; // 60x24
       GetFileTime(h, @Info1, @Info2, @Info3);
       if FileTimeToSystemTime(Info1, SysTimeStruct) then
         Created := SystemTimeToDateTime(SysTimeStruct) - Bias;
       if FileTimeToSystemTime(Info2, SysTimeStruct) then
         Accessed := SystemTimeToDateTime(SysTimeStruct) - Bias;
       if FileTimeToSystemTime(Info3, SysTimeStruct) then
         Modified := SystemTimeToDateTime(SysTimeStruct) - Bias;
       Result := True;
     finally
       FileClose(h);
     end;
   end;
end;


지금까지는 물론이고 앞으로도 제가 많은 도움을 받게될 볼랜드포럼의 여러 고수분들께 감사드립니다.
kylix [leowiz]   2014-12-12 15:12 X
FileTimeToSystemTime하시기 전에 FileTimeToLocalFileTime함수로 로컬시간으로 변경해주시면 TimeZone구할 필요없이 바로 로컬시간으로 변경됩니다.
kylix [leowiz]   2014-12-12 15:17 X
한가지더
GetFileTime함수보다는 GetFileAttributesEx함수를 이용하시는 것이 보다 더 안정적입니다.
첫눈 [hadugo]   2014-12-12 16:50 X
감사합니다. 당장 수정해야 겠습니다.^^

+ -

관련 글 리스트
326 파일 생성일자, 마지막 수정일자, 접근일자 구하기 첫눈 5245 2014/12/12
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.