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