CodeItBetter Programming Another VB Programming Blog

How to return the create date/time, last accessed date/time, last modified date/time of a given file

Posted on January 5, 2009
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
'System & API - How to return the create date/time, last accessed date/time, last modified date/time of a given file
Option Explicit
 
Private Type FileTime
    dwLowDateTime As Long
    dwHighDateTime As Long
End Type
Private Type SYSTEMTIME
    wYear As Integer
    wMonth As Integer
    wDayOfWeek As Integer
    wDay As Integer
    wHour As Integer
    wMinute As Integer
    wSecond As Integer
    wMilliseconds As Integer
End Type
Private Const GENERIC_WRITE = &H40000000
Private Const OPEN_EXISTING = 3
Private Const FILE_SHARE_READ = &H1
Private Const FILE_SHARE_WRITE = &H2
Private Declare Function GetFileTime Lib "kernel32" (ByVal hFile As Long, lpCreationTime As FileTime, _
    lpLastAccessTime As FileTime, lpLastWriteTime As FileTime) As Long
Private Declare Function CreateFile Lib "kernel32" Alias "CreateFileA" (ByVal lpFileName As String, _
    ByVal dwDesiredAccess As Long, ByVal dwShareMode As Long, lpSecurityAttributes As Long, _
    ByVal dwCreationDisposition As Long, ByVal dwFlagsAndAttributes As Long, ByVal hTemplateFile As Long) As Long
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Private Declare Function FileTimeToSystemTime Lib "kernel32" (lpFileTime As FileTime, _
    lpSystemTime As SYSTEMTIME) As Long
Private Declare Function FileTimeToLocalFileTime Lib "kernel32" (lpFileTime As FileTime, _
    lpLocalFileTime As FileTime) As Long
 
Public Sub FileDateTime(strFileName As String)
    'This function returns create date and time of the given file.
    Dim lngHandle As Long
    Dim Ft1 As FileTime, Ft2 As FileTime, Ft3 As FileTime, Ft4 As FileTime, SysTime As SYSTEMTIME
    'Open the file
    lngHandle = CreateFile(strFileName, GENERIC_WRITE, FILE_SHARE_READ Or FILE_SHARE_WRITE, ByVal 0&, OPEN_EXISTING, 0, 0)
    'Get the file time
    GetFileTime lngHandle, Ft1, Ft2, Ft3
 
    'Convert the file time to the local file time
    FileTimeToLocalFileTime Ft1, Ft4
    'Convert the file time to system file time
    FileTimeToSystemTime Ft4, SysTime
    Debug.Print "Date Created       : " & Str$(SysTime.wMonth) & "/" & LTrim(Str$(SysTime.wDay)) & "/" & LTrim(Str$(SysTime.wYear)) & " " & Str$(SysTime.wHour) & ":" & LTrim(Str$(SysTime.wMinute)) & ":" & LTrim(Str$(SysTime.wSecond))
 
    'Convert the file time to the local file time
    FileTimeToLocalFileTime Ft3, Ft4
    'Convert the file time to system file time
    FileTimeToSystemTime Ft4, SysTime
    Debug.Print "Date Last Modified : " & Str$(SysTime.wMonth) & "/" & LTrim(Str$(SysTime.wDay)) & "/" & LTrim(Str$(SysTime.wYear)) & " " & Str$(SysTime.wHour) & ":" & LTrim(Str$(SysTime.wMinute)) & ":" & LTrim(Str$(SysTime.wSecond))
 
    'Convert the file time to the local file time
    FileTimeToLocalFileTime Ft2, Ft4
    'Convert the file time to system file time
    FileTimeToSystemTime Ft4, SysTime
    Debug.Print "Date Last Accessed : " & Str$(SysTime.wMonth) & "/" & LTrim(Str$(SysTime.wDay)) & "/" & LTrim(Str$(SysTime.wYear)) & " " & Str$(SysTime.wHour) & ":" & LTrim(Str$(SysTime.wMinute)) & ":" & LTrim(Str$(SysTime.wSecond))
 
    'Close the file
    CloseHandle lngHandle
End Sub
 
'How can I call this sub-routine:
'Call FileDateTime("C:\Temp\Test.txt")
'Returns:
'Date Created       :  3/24/2007  9:19:28
'Date Last Modified :  1/9/2007  14:57:10
'Date Last Accessed :  3/25/2007  2:27:8
Comments (0) Trackbacks (0)

No comments yet.


Leave a comment


 

No trackbacks yet.