Compartir a través de


Conversión de un valor de time_t a FILETIME

Las funciones de tiempo incluidas en el tiempo de ejecución de C usan el tipo time_t para representar el número de segundos transcurridos desde la medianoche del 1 de enero de 1970. En el ejemplo siguiente se convierte un valor de time_t en 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;
}

Después de obtener un filetime, puede convertir el valor a la hora del sistema mediante la función FileTimeToSystemTime .

Ejemplo de código heredado

El ejemplo de código de la sección anterior es adecuado para cualquier arquitectura. Pero si compila para una arquitectura de 32 bits y define _USE_32BIT_TIME_T, time_t es un valor de 32 bits. En ese caso, tiene la opción de usar el ejemplo de código siguiente en su lugar.

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