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