ファイルのファイルタイムを比較          <TOP>


ファイルのファイルタイムを比較します。

GetSystemTime 現在の世界協定時刻を取得

LocalFileTimeToFileTime ローカルファイルタイムをUTCファイルタイム形式で取得

SystemTimeToFileTime システムタイムをファイルタイムに変換

CompareFileTime ファイルのファイルタイムを比較

FileTimeToSystemTime ファイルタイムをシステムファイルに変換

FileTimeToLocalFileTime 世界協定時刻形式ファイル時間をローカルファイル時間に変換

 

 

 

'================================================================
'= ファイルのファイルタイムを比較
'=    (CompareFileTime.bas)
'================================================================
#include "Windows.bi"

#define vbCrLf (Chr$(13) & Chr$(10))    'キャリッジリターンとラインフィード(\r\n)

Type FILETIME
    dwLowDateTime  As Long
    dwHighDateTime As Long
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

' 現在の世界協定時刻の取得
Declare Sub Api_GetSystemTime Lib "kernel32" Alias "GetSystemTime" (lpSystemTime As SYSTEMTIME)

' ローカルファイルタイムをUTCファイルタイム形式で取得
Declare Function Api_LocalFileTimeToFileTime& Lib "kernel32" Alias "LocalFileTimeToFileTime" (lpLocalFileTime As FILETIME, lpFileTime As FILETIME)

' システムタイムをファイルタイムに変換
Declare Function Api_SystemTimeToFileTime& Lib "kernel32" Alias "SystemTimeToFileTime" (lpSystemTime As SYSTEMTIME, lpFileTime As FILETIME)

' ファイルのファイルタイムを比較
Declare Function Api_CompareFileTime& Lib "kernel32" Alias "CompareFileTime" (lpFileTime1 As FILETIME, lpFileTime2 As FILETIME)

' ファイルタイムをシステムファイルに変換
Declare Function Api_FileTimeToSystemTime& Lib "kernel32" Alias "FileTimeToSystemTime" (lpFileTime As FILETIME, lpSystemTime As SYSTEMTIME)

' 世界協定時刻形式ファイル時間をローカルファイル時間に変換
Declare Function Api_FileTimeToLocalFileTime& Lib "kernel32" Alias "FileTimeToLocalFileTime" (lpFileTime As FILETIME, lpLocalFileTime As FILETIME)

Var Shared Text1 As Object
Var Shared Text2 As Object
Var Shared Timer1 As Object

Text1.Attach GetDlgItem("Text1") : Text1.SetFontSize 14
Text2.Attach GetDlgItem("Text2") : Text2.SetFontSize 14
Timer1.Attach GetDlgItem("Timer1")

'================================================================
'=
'================================================================
Declare Sub MainForm_Start edecl ()
Sub MainForm_Start()
    Timer1.SetInterval 100
    Timer1.Enable -1
End Sub

'================================================================
'=
'================================================================
Declare Sub Timer1_Timer edecl ()
Sub Timer1_Timer()
    Var LocalTime As FILETIME
    Var GMTTime As FILETIME
    Var STimeLocal As SYSTEMTIME
    Var STimeGMT As SYSTEMTIME
    Var TmpTime As FILETIME
    Var txt As String
    Var Ret As Long
   
    Api_GetSystemTime STimeLocal
   
    Ret = Api_SystemTimeToFileTime(STimeLocal, TmpTime)
   
    Ret = Api_FileTimeToLocalFileTime(TmpTime, LocalTime)
   
    Ret = Api_LocalFileTimeToFileTime(LocalTime, GMTTime)
   
    Ret = Api_FileTimeToSystemTime(GMTTime, STimeGMT)
    Ret = Api_FileTimeToSystemTime(LocalTime, STimeLocal)
   
    Ret = Api_CompareFileTime(LocalTime, GMTTime)

    Select Case Ret
        Case -1
            Text2.SetWindowText "ローカル < GMT"
        Case 0
            Text2.SetWindowText "ローカル = GMT"
        Case 1
            Text2.SetWindowText "ローカル > GMT"
    End Select

    txt = Format$(STimeLocal.wHour, "## : ") & Format$(STimeLocal.wMinute, "## : ") & Format$(STimeLocal.wSecond, "## ") & "(ローカル)"
    txt = txt & vbCrLf & Format$(STimeGMT.wHour, "## : ") & Format$(STimeGMT.wMinute, "## : ") & Format$(STimeGMT.wSecond, "## ") & "(GMT)"
    Text1.SetWindowText txt
End Sub

'================================================================
'=
'================================================================
While 1
    WaitEvent
Wend
Stop
End