Partager via


Conversion d’une valeur time_t en FILETIME

Les fonctions de temps incluses dans l’exécution C utilisent le type time_t pour représenter le nombre de secondes écoulées depuis minuit, le 1er janvier 1970. L’exemple suivant convertit une valeur 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;
}

Une fois que vous avez obtenu un FILETIME, vous pouvez convertir la valeur en heure système à l’aide de la fonction FileTimeToSystemTime .

Exemple de code hérité

L’exemple de code de la section précédente convient à toutes les architectures. Mais si vous générez pour une architecture 32 bits et que vous définissez _USE_32BIT_TIME_T, time_t est une valeur 32 bits. Dans ce cas, vous avez la possibilité d’utiliser l’exemple de code suivant à la place.

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