| | |
How to Get Last Accessed/Created/Modified File Date and Time
![]() |
If you are programming for windows you can use the GetFileTime( ) API to retrieve the Created/LastAccessed/and Last Modified times. These are output in the FILETIME structure, so you will have to use the FileTimeToSystemTime() in order to change the FILETIME structure to a SYSTEMTIME structure.
After that , you can get the current systemtime using the GetSystemTime() and compare this with the times you got for the file.
You can find more in
http://msdn.microsoft.com/library/de..._functions.asp
After that , you can get the current systemtime using the GetSystemTime() and compare this with the times you got for the file.
You can find more in
http://msdn.microsoft.com/library/de..._functions.asp
Have you been able to get the dates and times? The thing is that SYSTEMDATE is not in the usual "yy mm dd" format. To display this in the way we all understand, you will have to use GetDateFormat and GetTime Format functions. Better is you give us the code up to where you have got the file times and system times. Then it is easier to narrow out the problem.
•
•
Join Date: May 2005
Posts: 13
Reputation:
Solved Threads: 0
look at this code..its working, but not displyg the time properly.
im getg the output like..
last modified date and time = 15-06-05 00:00:00
but im get the current time and date correctly.
currrent time =3:11:44
current date =16/05/05
the next thing what im trying is, to compare both the last modified time and date to the current date and time. can u explain me how to do that...
my code is:
char filename[] = "c:\\test.txt";
if (!stat(filename, &buf))
{
struct tm* atime = localtime(&buf.st_atime);
strftime(timeStr, 100, "%d-%m-%Y %H:%M:%S", atime);
printf("\nLast modified date and time = %s\n", timeStr);
}
else
printf("error getting atime\n");
_strtime(time);
_strdate(date);
printf("\nThe Current time is %s\n",time);
printf("\nThe Current Date is %s\n",date);
thanx in advance,
regards
prasad
im getg the output like..
last modified date and time = 15-06-05 00:00:00
but im get the current time and date correctly.
currrent time =3:11:44
current date =16/05/05
the next thing what im trying is, to compare both the last modified time and date to the current date and time. can u explain me how to do that...
my code is:
char filename[] = "c:\\test.txt";
if (!stat(filename, &buf))
{
struct tm* atime = localtime(&buf.st_atime);
strftime(timeStr, 100, "%d-%m-%Y %H:%M:%S", atime);
printf("\nLast modified date and time = %s\n", timeStr);
}
else
printf("error getting atime\n");
_strtime(time);
_strdate(date);
printf("\nThe Current time is %s\n",time);
printf("\nThe Current Date is %s\n",date);
thanx in advance,
regards
prasad
C Syntax (Toggle Plain Text)
#include <time.h> #include <sys/types.h> #include <sys/stat.h> #include <stdio.h> int main() { char filename[] = "c:\\test.txt"; char timeStr[ 100 ] = ""; struct stat buf; time_t ltime; char datebuf [9]; char timebuf [9]; if (!stat(filename, &buf)) { strftime(timeStr, 100, "%d-%m-%Y %H:%M:%S", localtime( &buf.st_mtime)); printf("\nLast modified date and time = %s\n", timeStr); } else { printf("error getting atime\n"); } _strtime(timebuf); _strdate(datebuf); printf("\nThe Current time is %s\n",timebuf); printf("\nThe Current Date is %s\n",datebuf); time( <ime ); printf("\nThe Current time is %s\n",ctime( <ime )); printf("\Diff between current and last modified time ( in seconds ) %f\n", difftime(ltime ,buf.st_mtime ) ); return 0; }
My Output was
Last modified date and time = 06-04-2005 17:24:12
The Current time is 10:25:53
The Current Date is 06/17/05
The Current time is Fri Jun 17 10:25:53 2005
Diff between current and last modified time ( in seconds ) 6195701.000000
Use buf.st_atime instead of buf.st_mtime. That is the last accessed time. But keep in mind that since you are accessing that file in your program, the result will be the time you run the program. Even if you right click the file in Windows ( at least in my Windows 2000 OS ) and select properties, you will see that the last accessed time is the time you right clicked the file. I dont know anyway of getting around that. I personally think that the last modified time ( buf.st_mtime) is the one that matters the most in your application. But it can be otherwise. Good luck.
I think I figured out the problem. It is the File System which makes the stat::a_time come out the same. I found the below in the documentation.
Try running this in an NTFS partition, and check the results. Hopefully there will be an improvement in results.
•
•
•
•
st_atime
Time of last access of file. Valid on NTFS but not on FAT formatted disk drives. Gives the same
![]() |
Other Threads in the C Forum
- Previous Thread: Implementation of Stacks and Queues
- Next Thread: How to compare the last two modified date and time of a file
| Thread Tools | Search this Thread |
adobe api array arrays binarysearch calculate char cm convert copyanyfile copypdffile cprogramme createcopyoffile createprocess() csyntax directory dynamic feet fflush file floatingpointvalidation fork forloop frequency getlasterror givemetehcodez global graphics gtkgcurlcompiling hacking hardware highest homework i/o inches incrementoperators intmain() iso kernel kilometer km linked linkedlist linux linuxsegmentationfault list locate logical_drives loopinsideloop. match matrix microsoft motherboard mqqueue mysql oddnumber odf open opendocumentformat opensource openwebfoundation owf pattern pdf performance pointer posix power probleminc program programming pyramidusingturboccodes read recursion recv recvblocked repetition research scanf scheduling segmentationfault send shape socketprograming socketprogramming stack standard strchr string suggestions systemcall test unix urboc user variable voidmain() wab win32api windows.h






