48 lines
No EOL
1.2 KiB
C++
48 lines
No EOL
1.2 KiB
C++
#include "pch.h"
|
|
#include "TimeFunctions.h"
|
|
|
|
#pragma unmanaged
|
|
|
|
TimeFunctions::TimeFunctions()
|
|
{
|
|
}
|
|
|
|
void TimeFunctions::EpdTimeToFileTime( INT32 t, LPFILETIME pft)
|
|
{
|
|
LONGLONG ll;
|
|
ll = Int32x32To64(t, 10000000) + 125911584000000000; //1601-1-1 -> 2000
|
|
pft->dwLowDateTime = (DWORD)ll;
|
|
pft->dwHighDateTime = ll >> 32;
|
|
}
|
|
|
|
void TimeFunctions::FileTimeToEpdTime( FILETIME pft, INT32* t)
|
|
{
|
|
LONGLONG ll = ((((LONGLONG)pft.dwHighDateTime << 32) + pft.dwLowDateTime) - 125911584000000000) / 10000000;
|
|
*t = (DWORD)ll;
|
|
}
|
|
|
|
INT32 TimeFunctions::NowToEpdTime( )
|
|
{
|
|
SYSTEMTIME t;
|
|
GetSystemTime(&t);
|
|
FILETIME ft;
|
|
SystemTimeToFileTime((const SYSTEMTIME *)&t, &ft);
|
|
LONGLONG ll = ((((LONGLONG)ft.dwHighDateTime << 32U) + ft.dwLowDateTime) - 125911584000000000) / 10000000;
|
|
return (DWORD)ll;
|
|
}
|
|
|
|
void TimeFunctions::UnixTimeToFileTime(time_t t, LPFILETIME pft)
|
|
{
|
|
// Note that LONGLONG is a 64-bit value
|
|
LONGLONG ll;
|
|
ll = Int32x32To64(t, 10000000) + 116444736000000000; //1601-1-1 1970-1-1
|
|
pft->dwLowDateTime = (DWORD)ll;
|
|
pft->dwHighDateTime = ll >> 32;
|
|
}
|
|
|
|
void TimeFunctions::UnixTimeToSystemTime(time_t t, LPSYSTEMTIME pst)
|
|
{
|
|
FILETIME ft;
|
|
UnixTimeToFileTime(t, &ft);
|
|
FileTimeToSystemTime(&ft, pst);
|
|
} |