Condividi tramite


Conversione di un valore time_t in fileTIME

Le funzioni temporali incluse nel runtime C usano il tipo di time_t per rappresentare il numero di secondi trascorsi dalla mezzanotte del 1° gennaio 1970. Nell'esempio seguente viene convertito un valore time_t in un FILETIME.

#include <windows.h>
#include <time.h>

void TimetToFileTime(time_t t, LPFILETIME pft)
{
    ULARGE_INTEGER time_value;
    time_value.QuadPart = (t * 10000000LL) + 116444736000000000LL;
    pft->dwLowDateTime = time_value.LowPart;
    pft->dwHighDateTime = time_value.HighPart;
}

Dopo aver ottenuto un FILETIME, è possibile convertire il valore in ora di sistema usando la funzione FileTimeToSystemTime.

Esempio di codice legacy

L'esempio di codice nella sezione precedente è valido per qualsiasi architettura. Tuttavia, se si compila per un'architettura a 32 bit e si definisce _USE_32BIT_TIME_T, time_t è un valore a 32 bit. In questo caso è possibile usare invece l'esempio di codice seguente.

#include <windows.h>
#include <time.h>

void TimetToFileTime(time_t t, LPFILETIME pft)
{
    LONGLONG time_value = Int32x32To64(t, 10000000) + 116444736000000000;
    pft->dwLowDateTime = (DWORD) time_value;
    pft->dwHighDateTime = time_value >> 32;
}