'2011/08'에 해당되는 글 1건

  1. 2011/08/10 :: Win32 SYSTEMTIME, FILETIME과 Unix Timestamp간의 변환.
분류없음 2011/08/10 23:06
void UnixTimeToFileTime(time_t* pt, LPFILETIME pft) {
    LONGLONG ll; // 64 bit value
    ll = Int32x32To64(*pt, 10000000) + 116444736000000000L;
    pft->dwLowDateTime = (DWORD) ll;
    pft->dwHighDateTime = (DWORD)(ll >> 32);
}

void FileTimeToUnixTime(LPFILETIME pft, AC_UINT64* pt) {
    LONGLONG ll; // 64 bit value
    ll = (((LONGLONG)(pft->dwHighDateTime)) << 32) + pft->dwLowDateTime;
    *pt = (time_t)((ll - 116444736000000000L) / 10000000L);
}

void UnixTimeToSystemTime(time_t* pt, LPSYSTEMTIME pst) {
    FILETIME ft;
    UnixTimeToFileTime(pt, &ft);
    FileTimeToSystemTime(&ft, pst);
}

void SystemTimeToUnixTime(LPSYSTEMTIME pst, AC_UINT64* pt) {
    FILETIME ft;
    SystemTimeToFileTime(pst, &ft);
    FileTimeToUnixTime(&ft, pt);
}
posted by 강지훈