Note

Access to this page requires authorization. You can try signing in or .

Access to this page requires authorization. You can try .

Retrieving the Last-Write Time

The following example uses the GetFileTime function to retrieve the last-write time for a file. It converts the time to local time based on the current time-zone settings, and creates a date and time string that can be shown to the user.

#include <windows.h>
#include <tchar.h>
#include <strsafe.h>

// GetLastWriteTime - Retrieves the last-write time and converts
// the time to a string
//
// Return value - TRUE if successful, FALSE otherwise
// hFile - Valid file handle
// lpszString - Pointer to buffer to receive string

BOOL GetLastWriteTime(HANDLE hFile, LPTSTR lpszString, DWORD dwSize)
{
 FILETIME ftCreate, ftAccess, ftWrite;
 SYSTEMTIME stUTC, stLocal;
 DWORD dwRet;

 // Retrieve the file times for the file.
 if (!GetFileTime(hFile, &ftCreate, &ftAccess, &ftWrite))
 return FALSE;

 // Convert the last-write time to local time.
 FileTimeToSystemTime(&ftWrite, &stUTC);
 SystemTimeToTzSpecificLocalTime(NULL, &stUTC, &stLocal);

 // Build a string showing the date and time.
 dwRet = StringCchPrintf(lpszString, dwSize, 
 TEXT("%02d/%02d/%d %02d:%02d"),
 stLocal.wMonth, stLocal.wDay, stLocal.wYear,
 stLocal.wHour, stLocal.wMinute);

 if( S_OK == dwRet )
 return TRUE;
 else return FALSE;
}

int _tmain(int argc, TCHAR *argv[])
{
 HANDLE hFile;
 TCHAR szBuf[MAX_PATH];

 if( argc != 2 )
 {
 printf("This sample takes a file name as a parameter\n");
 return 0;
 }
 hFile = CreateFile(argv[1], GENERIC_READ, FILE_SHARE_READ, NULL,
 OPEN_EXISTING, 0, NULL);

 if(hFile == INVALID_HANDLE_VALUE)
 {
 printf("CreateFile failed with %d\n", GetLastError());
 return 0;
 }
 if(GetLastWriteTime( hFile, szBuf, MAX_PATH ))
 _tprintf(TEXT("Last write time is: %s\n"), szBuf);
 
 CloseHandle(hFile); 
}

Related topics

FileTimeToSystemTime

SystemTimeToTzSpecificLocalTime


Feedback

Was this page helpful?

Additional resources