在Window系统中,时间日期本人知道的有以下数种 1.SystemTime: system time is expressed in Coordinated Universal Time (UTC) 2.LocalTime: 指的是local PC的时间日期,即vb Date() Time()所传回的日期时间 3.FileTime : 文件储存的时间格式 前面两种日期的格式都是 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 SYSTEMTIME的格式够清楚了,而FileTime则是 Type FileTime dwLowDateTime As Long dwHighDateTime As Long End Type The FILETIME structure is a 64-bit value representing the number of 100-nanosecond intervals since January 1, 1601 这三个时间是可以做转换的,LocalTime对SystemTime最简单 SystemTime = LocalTime + 时间差 (以台湾来说 时间差 = -8小时) 我们可以用GetTimeZoneInformation()来取得时间差。 而SystemTime和FileTime间的转换则可用 FileTimeToSystemTime() SystemTimeToFileTime()来转换。剩下的就是更动时间的部 份,那使用SetFileTime来完成 SetFileTime( HANDLE hFile, // identifies the file CONST FILETIME * lpftCreation, // time the file was created CONST FILETIME * lpftLastAccess, // time the file was last accessed CONST FILETIME * lpftLastWrite // time the file was last written ); 如果不想更动日期,相对应的叁数传Null进去 。 另可叁考读取文件建立时间及存取时间
'以下程式在Form,需 textBox * 1 Command Button * 1
Option Explicit
Private hFile As Long
Private 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 Long
hFile = 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
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)