Compartilhar via


Convertendo um valor time_t em um FILETIME

As funções de tempo incluídas no tempo de execução C usam o tipo time_t para representar o número de segundos decorridos desde a meia-noite de 1º de janeiro de 1970. O exemplo a seguir converte um valor de time_t em 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;
}

Depois de obter um FILETIME, você pode converter o valor em tempo do sistema usando a função FileTimeToSystemTime .

Exemplo de código herdado

O exemplo de código na seção anterior é bom para qualquer arquitetura. Mas se você criar para uma arquitetura de 32 bits e definir _USE_32BIT_TIME_T, time_t será um valor de 32 bits. Nesse caso, você tem a opção de usar o exemplo de código a seguir.

#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;
}