Cercando di emulare il comportamento del comando Dir su windows mi sono imbattuto in uno strano problema: la data di ultima scrittura stampata dal mio programma è differente da quella stampata dal comando Dir!

Posto il codice:

codice:
 char* tp;

LPWIN32_FIND_DATA data=malloc(sizeof(WIN32_FIND_DATA));

LPSYSTEMTIME time=malloc(sizeof(SYSTEMTIME));

HANDLE f=FindFirstFile("/*",data);

FileTimeToSystemTime(&((*data).ftLastWriteTime),time);

if((*data).dwFileAttributes==FILE_ATTRIBUTE_DIRECTORY) tp="<DIR>";
else tp="     ";

printf("%d/%d/%d  %02d.%02d  %s  %d %s\n",(*time).wDay,(*time).wMonth,(*time).wYear,(*time).wHour,(*time).wMinute,tp,(*data).nFileSizeLow,(*data).cFileName);

while(FindNextFile(f,data)){
  
FileTimeToSystemTime(&((*data).ftLastAccessTime),time);

if((*data).dwFileAttributes==FILE_ATTRIBUTE_DIRECTORY) tp="<DIR>";
else tp="     ";

printf("%d/%d/%d  %02d.%02d  %s  %d %s\n",(*time).wDay,(*time).wMonth,(*time).wYear,(*time).wHour,(*time).wMinute,tp,(*data).nFileSizeLow,(*data).cFileName);}
Facendolo girare non solo mi sbaglia l'orario ma anche il giorno,almeno al confronto con l'output di Dir!
Ho letto che di default Dir stampa la data di ultima scrittura, e in effetti guardando bene quella stampata da Dir coincide con le mie operazioni.
Come mai??