프로그램을 작성하다 보니.. 파일의 시간을 변경할 일이 발생했다...
Win32 API에서 여러가지 함수를 제공하기는 하는데.. time_t를 바로 지원하지는 않는다. -_-;;;
다행히도 MSDN에서 이를 지원하는 KB가 있어 옮겨 보았다.
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.
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: | |||||||||||||||||||||
|
Keywords: |
kbdatetime kbhowto kbkernbase kbprogramming KB167296 |