| 网站首页 | JAVA文章 | AppServers | Web开发 | 应用开发 | 资源下载 | 论坛
    想学好编程,学好外语很重要  [enadd  2006年12月25日]        
设为首页 加入收藏 联系站长
您现在的位置: 编程笔记网 >> 应用开发 >> vb >> 文件 >> 文章正文
更改文件日期时间            【字体:
更改文件日期时间
作者:-    文章来源:-    点击数:    更新时间:2006-6-8

在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)

文章录入:enadd    责任编辑:enadd 
  • 上一篇文章: 没有了

  • 下一篇文章:
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    最新热点 最新推荐 相关文章
  • 用VB编写DirectX7.0游戏(下…

  • 用VB编写DirectX7.0游戏(上…

  • 使用OLE DB和ADO调用返回记录…

  • 使用VB调用Oracle程序包内的…

  • VB中用ADO对象动态创建数据库…

  • fffff

  • 如何用MSComm Control传Bina…

  • MultiLink的WinSock Server程…

  • 用VB制作浏览器

  • 用VB编写网络寻呼机

  •   网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    | 设为首页 | 加入收藏 | 联系站长 | 友情链接 | 版权申明 | 管理登录 |