这个....
最好的方法还是修改一下,不然就得改FAT表里,文件的最后修改日期是保存在文件的FAT表里的.除了时间还有文件名等信息.

解决方案 »

  1.   

    Call APIPublic Declare Function SetFileTime Lib "kernel32" Alias "SetFileTime" (ByVal hFile As Long, lpCreationTime As FILETIME, lpLastAccessTime As FILETIME, lpLastWriteTime As FILETIME) As LongPublic Type FILETIME
            dwLowDateTime As Long
            dwHighDateTime As Long
    End Type
      

  2.   

    'SetFileTime junk
    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 TypePrivate Const GENERIC_WRITE = &H40000000
    Private Const GENERIC_READ = &H80000000
    Private Const FILE_ATTRIBUTE_NORMAL = &H80
    Private Const INVALID_HANDLE_VALUE = -1
    Private Const FILE_SHARE_READ = &H1
    Private Const FILE_SHARE_WRITE = &H2
    Private Const CREATE_NEW = 1
    Private Const CREATE_ALWAYS = 2
    Private Const OPEN_EXISTING = 3
    Private Const OPEN_ALWAYS = 4Private Declare Function LocalFileTimeToFileTime Lib "Kernel32" (lpFileTime As FileTime, lpLocalFileTime As FileTime) As Long
    Private Declare Function CreateFile Lib "Kernel32" Alias "CreateFileA" (ByVal lpFilename As String, ByVal dwDesiredAccess As Long, ByVal dwShareMode As Long, ByVal lpSecurityAttributes As Long, ByVal dwCreationDisposition As Long, ByVal dwFlagsAndAttributes As Long, ByVal hTemplateFile As Long) As Long
    Private Declare Function SetFileTime Lib "Kernel32" (ByVal hFile As Long, lpCreationTime As FileTime, lpLastAccessTime As FileTime, lpLastWriteTime As FileTime) As Long
    Private Declare Function CloseHandle Lib "Kernel32" (ByVal hObject As Long) As Long
    Private Declare Function SystemTimeToFileTime Lib "Kernel32" (lpSystemTime As SYSTEMTIME, lpFileTime As FileTime) As Long
    Private Declare Function VariantTimeToSystemTime Lib "oleaut32.dll" (ByVal vtime As Date, lpSystemTime As SYSTEMTIME) As LongPrivate Function GetFileTime(ByVal aDate As Date) As FileTime
        Dim lTemp As SYSTEMTIME
        Dim lTime As FileTime
        VariantTimeToSystemTime aDate, lTemp
        SystemTimeToFileTime lTemp, lTime
        LocalFileTimeToFileTime lTime, GetFileTime
    End FunctionPublic Sub VBSetFileTime(ByVal sFile As String, ByVal CreationTime As Date, ByVal LastAccessTime As Date, ByVal LastWriteTime As Date)
        Dim hFile As Long
        Dim lCTime As FileTime,lATime As FileTime,lWTime As FileTime
        lCTime = GetFileTime(CreationTime)
        lATime = GetFileTime(LastAccessTime)
        lWTime = GetFileTime(LastWriteTime)
        hFile = CreateFile(sFile, GENERIC_WRITE Or GENERIC_READ, 0, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0)
        If hFile <> INVALID_HANDLE_VALUE Then
            Call SetFileTime(hFile, lCTime, lATime, lWTime)
            CloseHandle hFile
        End If
    End Sub
      

  3.   

    '以下程式在Form,需 textBox * 1   Command Button * 1
    Option Explicit
    Private hFile As LongPrivate Sub Command1_Click()
    Dim lpct As FileTime, lplac As FileTime, lplwr As FileTime
    Dim ofs As OFSTRUCT
    Dim tZone As TIME_ZONE_INFORMATION
    Dim ft As SYSTEMTIME
    Dim dtdate As Date
    Dim bias As LonghFile = OpenFile("c:\prn2", ofs, OF_READWRITE)
    Call GetTimeZoneInformation(tZone)
    bias = tZone.bias ' 时间差, 以「分」为单位
    '计算出Coordinated Universal Time (UTC).
    dtdate = CDate(Text1.Text) + TimeSerial(0, bias, 0)ft.wYear = Year(dtdate)
    ft.wMonth = Month(dtdate)
    ft.wDay = Day(dtdate)
    ft.wHour = Hour(dtdate)
    ft.wMinute = Minute(dtdate)
    ft.wSecond = Second(dtdate)
    ft.wDayOfWeek = WeekDay(dtdate)
    ft.wMilliseconds = 0
    Call SystemTimeToFileTime(ft, lplwr)'更动hFile的时间,第2个叁数改Create DateTime
    '第3个叁数改Last Access DateTime
    '第四个叁数改Last Modify DateTime
    Call SetFileTime(hFile, ByVal 0, ByVal 0, lplwr)
    Call CloseHandle(hFile)End Sub
    Private Sub Form_Load()
    Text1.Text = "1998/06/03 5:50:10 AM"
    End Sub
     
    '以下在.Bas
    Option Explicit Public Const OFS_MAXPATHNAME = 128
     Public Const OF_READ = &H0
     Public Const OF_READWRITE = &H2 Type OFSTRUCT
         cBytes As Byte
         fFixedDisk As Byte
         nErrCode As Integer
         Reserved1 As Integer
         Reserved2 As Integer
         szPathName(OFS_MAXPATHNAME) As Byte
     End Type 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 Type FileTime
          dwLowDateTime As Long
          dwHighDateTime As Long
     End Type Type TIME_ZONE_INFORMATION
          bias As Long
          StandardName(32) As Integer
          StandardDate As SYSTEMTIME
          StandardBias As Long
          DaylightName(32) As Integer
          DaylightDate As SYSTEMTIME
          DaylightBias As Long
     End Type Declare Function GetTimeZoneInformation Lib "kernel32" _
     (lpTimeZoneInformation As TIME_ZONE_INFORMATION) As Long
     Declare Function OpenFile Lib "kernel32" (ByVal lpFileName As String, _
     lpReOpenBuff As OFSTRUCT, ByVal wStyle As Long) As Long
     Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
     Declare Function SetFileTime Lib "kernel32" (ByVal hFile As Long, lpCreationTime As Any, lpLastAccessTime As Any, lpLastWriteTime As Any) As Long
     Declare Function SystemTimeToFileTime Lib "kernel32" (lpSystemTime As SYSTEMTIME, lpFileTime As FileTime) As Long Declare Sub GetSystemTime Lib "kernel32" (lpSystemTime As SYSTEMTIME)
     Declare Sub GetLocalTime Lib "kernel32" (lpSystemTime As SYSTEMTIME)