API遍历磁盘,为什么时间定义要有低字节段和高字节段之分。 
Type FILETIME                       '文件系统时间UTC格式    
        dwLowDateTime As Long       '文件系统时间的低字节段    
        dwHighDateTime As Long      '文件系统时间的高字节段    
End Type  
UTC转换为YYYY-MM-DD是取高还是取低。

解决方案 »

  1.   

    UTC格式的时间就是8字节32位的长度,所以需要这么个结构来存放。
    转换时,两部分要组合起来
      

  2.   

    http://www.enadd.com/appdev/vb/vbfile/200606/appdev_10498.html
      

  3.   

    Type FILETIME
            dwLowDateTime As Long
            dwHighDateTime As Long
    End Type
    Type WIN32_FIND_DATA
            dwFileAttributes As Long
            ftCreationTime As FILETIME
            ftLastAccessTime As FILETIME
            ftLastWriteTime As FILETIME
            nFileSizeHigh As Long
            nFileSizeLow As Long
            dwReserved0 As Long
            dwReserved1 As Long
            cFileName As String * 260
            cAlternate As String * 14
    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 TypePublic Declare Function FindFirstFile Lib "kernel32" Alias "FindFirstFileA" (ByVal lpFileName As String, lpFindFileData As WIN32_FIND_DATA) As Long
    Public Declare Function FindClose Lib "kernel32" (ByVal hFindFile&) As Long
    Public Declare Function FileTimeToSystemTime Lib "kernel32" (lpFileTime As FILETIME, lpSystemTime As SYSTEMTIME) As LongSub FILETIME()
        Dim stcSysDateTime As SYSTEMTIME
        Dim stcFindData As WIN32_FIND_DATA
        Dim hResu&
        hResu = FindFirstFile("F:\图书馆\程序设计\Delphi7完美经典.pdf", stcFindData)
        If (hResu > 0) Then
            FileTimeToSystemTime stcFindData.ftCreationTime, stcSysDateTime
            Debug.Print "文件创建时间:"; stcSysDateTime.wYear & "-" & stcSysDateTime.wMonth & "-" & stcSysDateTime.wDay & _
                                "   " & stcSysDateTime.wHour & ":" & Right$("0" & stcSysDateTime.wMinute, 2) & ":" & Right$("0" & stcSysDateTime.wSecond, 2)
            FileTimeToSystemTime stcFindData.ftLastWriteTime, stcSysDateTime
            Debug.Print "最后修改时间:"; stcSysDateTime.wYear & "-" & stcSysDateTime.wMonth & "-" & stcSysDateTime.wDay & _
                                "   " & stcSysDateTime.wHour & ":" & Right$("0" & stcSysDateTime.wMinute, 2) & ":" & Right$("0" & stcSysDateTime.wSecond, 2)
            FindClose hResu
        Else
            MsgBox "出现错误!", 16, "提示"
        End If
    End Sub
      

  4.   

    类型:
    Type FILETIME
            dwLowDateTime As Long
            dwHighDateTime As Long
    End Type
    用它定义的变量,一般是作为一个“整体”来使用的,除非你知道UTC格式的具体表示方案。
    上面的 Sub FILETIME() 你最好换成别的过程名,我提交时没太注意。