Problem mit FileTimeToSystemTime
-
Hallo, ich lese gerade aus einem Ordner alle Dateien aus und deren Erstellungsdatum.
filename: 6 creation time: 14:41:26:0
filename: 7 creation time: 14:41:26:0Datei 7 habe ich aber ca. 4 Sekunden später erstellt wieso wird mir die selbe creation time wie bei Datei 6 ausgeben?
Was mache ich da falsch?
#include <iostream> #include <windows> #include <vector> #include <sstream> using namespace std; int main(int argc, char* argv[]) { FILETIME time; SYSTEMTIME sysTime; bool next_file; WIN32_FIND_DATA FileData; WIN32_FIND_DATA FileDataNext; string newest_file; HANDLE FindHandle = FindFirstFile("*",&FileData); do { next_file = FindNextFile( FindHandle , &FileDataNext ); time = FileDataNext.ftCreationTime; FileTimeToSystemTime( &time, &sysTime ); cout<<"filename: " << FileDataNext.cFileName << " creation time: " << sysTime.wHour<<":"<<sysTime.wMinute<<":"<<sysTime.wSecond<<":"<<sysTime.wMilliseconds<<endl; } while( next_file == 1); system("PAUSE"); return 0; }
Programm Ausgabe:
[code]
filename: .. creation time: 8:28:45:125
filename: 1 creation time: 14:10:33:421
filename: 2 creation time: 14:21:46:312
filename: 3 creation time: 14:21:46:312
filename: 4 creation time: 14:31:17:312
filename: 5 creation time: 14:31:17:312
filename: 6 creation time: 14:41:26:0
filename: 7 creation time: 14:41:26:0
filename: File1.obj creation time: 8:28:50:953
filename: Project1.#00 creation time: 8:28:49:921
filename: Project1.exe creation time: 8:28:53:125
filename: Project1.map creation time: 8:28:54:46
filename: Project1.pch creation time: 8:28:49:921
filename: Project1.tds creation time: 8:28:52:890
filename: s creation time: 14:27:36:593
filename: s creation time: 14:27:36:593
Drücken Sie eine beliebige Taste . . .[code]
-
Weiss keiner was ich da falsch mache?
-
Ich habs mal ein wenig umgeschrieben:
WIN32_FIND_DATA FileData; HANDLE FindHandle = FindFirstFile("*",&FileData); if(FindHandle!=INVALID_HANDLE_VALUE) { do { if(!((FileData.cFileName[0]== '.' ) && ((FileData.cFileName[1] == '.' && FileData.cFileName[2]==0) || FileData.cFileName[1]==0))) { SYSTEMTIME sysTime,local; FileTimeToSystemTime( &FileData.ftCreationTime, &sysTime ); SystemTimeToTzSpecificLocalTime(NULL, &sysTime, &local); ostringstream os; os << setfill('0') << setw(2) << local.wDay << "." << setw(2)<<local.wMonth << "." << local.wYear << "," << setw(2) << local.wHour << ":" << setw(2)<<local.wMinute << ":" << setw(2)<<local.wSecond << "\t\t" << FileData.cFileName; cout << os.str() <<'\n'; } } while(FindNextFile( FindHandle , &FileData )); }
-
@HeinerEiner es ging nicht um die Formatierung ...
Aber egal ich glaub ich habe es jetzt:time = FileDataNext.ftLastWriteTime;
Wenn ich ftLastWriteTime benutze dann passt alles.
-
Vielleicht ist das System nicht so genau? Schon mal manuell in die Dateieigenschaften geguckt, ob dort der Unterschied vorhanden ist?