Container
|
Domain
|
Format / Notes
|
Min Date
|
Resolution
|
SYSTEMTIME
|
Win32
|
Struct (16 bytes)
|
January 1, 1601
|
1 millisecond
|
FILETIME
|
Win32
|
Offset value (64bit unsigned int)
|
January 1, 1601
|
100 nanoseconds
|
VT_DATE
|
Win32 / OLE Automation
|
Offset value (64bit signed float), 0.0 is December 30, 1899.
|
January 1, 100 (1)
|
500 milliseconds (2)
|
FAT/MS-DOS
|
Win32
|
Struct (values packed into two 16bit ints)
|
January 1, 1980
|
2 seconds
|
time_t
|
CRT
|
Offset value (unsigned int)
|
January 1, 1970
|
1 second
|
tm
|
CRT
|
Struct (36 bytes (3))
|
January 1, 1900
|
1 second
|
Перетворення
Windows Times
SYSTEMTIME
|
FILETIME
|
VT_DATE
|
FAT/приложений-DOS
| |
SYSTEMTIME
|
SystemTimeToFileTime
|
SystemTimeToVariantTime
| ||
FILETIME
|
FileTimeToSystemTime
|
FileTimeToDosDateTime
| ||
VT_DATE
|
VariantTimeToSystemTime
|
VariantTimeToDosDateTime
| ||
FAT/приложений-DOS
|
DosDateTimeToFileTime
|
DosDateTimeToVariantTime
|
CRT Times
time_t
|
ТМ
| |
time_t
|
gmtime
| |
ТМ
|
mktime
|
Converting between SYSTEMTIME and time_t
void SystemTimeToTime_t(SYSTEMTIME *systemTime, time_t *dosTime)
{
LARGE_INTEGER jan1970FT = {0};
jan1970FT.QuadPart = 116444736000000000I64; // january 1st 1970
LARGE_INTEGER utcFT = {0};
SystemTimeToFileTime(systemTime, (FILETIME*)&utcFT);
unsigned __int64 utcDosTime = (utcFT.QuadPart - an1970FT.QuadPart) / 10000000;
*dosTime = (time_t)utcDosTime;
}
void Time_tToSystemTime(time_t dosTime, SYSTEMTIME *systemTime)
{
LARGE_INTEGER jan1970FT = {0};
jan1970FT.QuadPart = 116444736000000000I64; // january 1st 1970
LARGE_INTEGER utcFT = {0};
utcFT.QuadPart = ((unsigned __int64)dosTime) * 10000000 + jan1970FT.QuadPart;
FileTimeToSystemTime((FILETIME*)&utcFT, systemTime);
}