Я пытаюсь получить дату последнего изменения файла, и это оказывается сложнее, чем я думал. Моя первая попытка была такой:
hFile = CreateFile(filename, GENERIC_READ, FILE_SHARE_READ|FILE_SHARE_WRITE, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
GetFileTime(hFile, &creationTime, &lastAccessTime, &lastWriteTime);
FileTimeToSystemTime(&lastWriteTime, &t);
printf("TEST: %d %d %d\n", t.wHour, t.wMinute, t.wSecond);
Я проверил это с файлом на моем HD, дата последнего изменения которого обозреватель сообщает как пятница, 21 марта 1997 года, 14:34:58. Теперь с кодом выше я получил ту же дату, за исключением того, что время сообщается как 13:34:58, то есть один час. Поэтому я подумал, что это, вероятно, связано с отсутствием настроек часового пояса / перехода на летнее время, поэтому я добавил вызов к FileTimeToLocalTime()
, то есть так:
hFile = CreateFile(filename, GENERIC_READ, FILE_SHARE_READ|FILE_SHARE_WRITE, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
GetFileTime(hFile, &creationTime, &lastAccessTime, &lastWriteTime);
FileTimeToLocalFileTime(&lastWriteTime, &ft);
FileTimeToSystemTime(&ft, &t);
Но теперь время сообщается как 15:34:58, т.е. еще один час, но теперь в противоположном направлении. Так что я все еще не получаю 14:34:58, как сообщает Explorer.
Вот почему я хотел бы спросить, как я могу получить дату последнего изменения, как сообщает Explorer. Кто-нибудь?