프로그램을 작성하다 보니.. 파일의 시간을 변경할 일이 발생했다...
Win32 API에서 여러가지 함수를 제공하기는 하는데.. time_t를 바로 지원하지는 않는다. -_-;;;

다행히도 MSDN에서 이를 지원하는 KB가 있어 옮겨 보았다.

How To Convert a UNIX time_t to a Win32 FILETIME or SYSTEMTIME

Article ID : 167296
Last Review : November 21, 2006
Revision : 3.3
This article was previously published under Q167296

SUMMARY

Under UNIX platforms, file times are maintained in the form of a ANSI C runtime arithmetic type named 'time_t', which represents seconds since midnight January 1, 1970 UTC (coordinated universal time).

Under Win32 platforms, file times are maintained primarily in the form of a 64-bit FILETIME structure, which represents the number of 100-nanosecond intervals since January 1, 1601 UTC (coordinate universal time).

This article shows how to convert UNIX time to other Win32 time formats.

MORE INFORMATION

The following function converts a filetime in the UNIX time_t format to a Win32 FILETIME format. Note that time_t is a 32-bit value and FILETIME is a 64-bit structure, so the Win32 function, Int32x32To64() is used in the following function:
   #include <winbase.h>
   #include <winnt.h>
   #include <time.h>

   void UnixTimeToFileTime(time_t t, LPFILETIME pft)
   {
     // Note that LONGLONG is a 64-bit value
     LONGLONG ll;

     ll = Int32x32To64(t, 10000000) + 116444736000000000;
     pft->dwLowDateTime = (DWORD)ll;
     pft->dwHighDateTime = ll >> 32;
   }
				
Once the UNIX time is converted to a FILETIME structure, other Win32 time formats can be easily obtained by using Win32 functions such as FileTimeToSystemTime() and FileTimeToDosDateTime().
   void UnixTimeToSystemTime(time_t t, LPSYSTEMTIME pst)
   {
     FILETIME ft;

     UnixTimeToFileTime(t, &ft);
     FileTimeToSystemTime(&ft, pst);
   }
				

APPLIES TO
Microsoft Win32 Application Programming Interface, when used with:
    Microsoft Windows 95
    Microsoft Windows 98 Standard Edition
    Microsoft Windows Millennium Edition
    Microsoft Windows NT 3.51 Service Pack 5
    Microsoft Windows NT 4.0
    Microsoft Windows 2000 Standard Edition
    Microsoft Windows XP Professional

Back to the top

Keywords:
kbdatetime kbhowto kbkernbase kbprogramming KB167296
 

+ Recent posts