档案时间

档案时间

档案时间是档案在创建,修改,访问的时间,

本地档案时间,档案从别的机器拷贝到本地机,本机对档案时间的影响称为档案时间,

系统时间,是本地机的系统内部时间,精确到毫秒。

本地时间与UTC(世界协调时间)的转换

此函式获取系统时间

void CLog::GetSysTime(SYSTEMTIME* lpSysTime)//获得系统时间

{

FILETIME CurFileTime;

::GetSystemTimeAsFileTime(&CurFileTime);//GetSystemTimeAsFileTime 首先获得系统时间 UTC格式

::FileTimeToLocalFileTime(&CurFileTime,&CurFileTime);//FileTimeToLocalFileTime 将UTC档案时间转换成本地时间

::FileTimeToSystemTime(&CurFileTime,lpSysTime);// FileTimeToSystemTime 将64位档案时间转换成系统时间格式(UTC)

}

在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 IntegerEnd Type这TYPE SYSTEMTIME的格式够清楚了,而FileTime则是Type FileTime dwLowDateTime As Long dwHighDateTime As LongEnd TypeThe FILETIME structure is a 64-bit value representing the number of100-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 * 1Option ExplicitPrivate hFile As LongPrivate Sub Command1_Click()Dim lpct As FileTime, lplac As FileTime, lplwr As FileTimeDim ofs As OFSTRUCTDim tZone As TIME_ZONE_INFORMATIONDim ft As SYSTEMTIMEDim dtdate As DateDim 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 = 0Call SystemTimeToFileTime(ft, lplwr)'更动hFile的时间,

第2个参数改Create DateTime'

第3个参数改Last Access DateTime'

第四个参数改Last Modify DateTimeCall SetFileTime(hFile, ByVal 0, ByVal 0, lplwr)Call CloseHandle(hFile)End SubPrivate Sub Form_Load()Text1.Text = 1998/06/03 5:50:10 AMEnd SubOption ExplicitPublic Const OFS_MAXPATHNAME = 128Public Const OF_READ = &H0Public Const OF_READWRITE = &H2Type OFSTRUCT cBytes As Byte fFixedDisk As Byte nErrCode As Integer Reserved1 As Integer Reserved2 As Integer szPathName(OFS_MAXPATHNAME) As ByteEnd TypeType SYSTEMTIME wYear As Integer wMonth As Integer wDayOfWeek As Integer wDay As Integer wHour As Integer wMinute As Integer wSecond As Integer wMilliseconds As IntegerEnd TypeType FileTime dwLowDateTime As Long dwHighDateTime As LongEnd TypeType 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 LongEnd TypeDeclare Function GetTimeZoneInformation Lib kernel32 _ (lpTimeZoneInformation As TIME_ZONE_INFORMATION) As LongDeclare Function OpenFile Lib kernel32 (ByVal lpFileName As String, _ lpReOpenBuff As OFSTRUCT, ByVal wStyle As Long) As LongDeclare Function CloseHandle Lib kernel32 (ByVal hObject As Long) As LongDeclare Function SetFileTime Lib kernel32 (ByVal hFile As Long, lpCreationTime As Any, lpLastAccessTime As Any, lpLastWriteTime As Any) As LongDeclare Function SystemTimeToFileTime Lib kernel32 (lpSystemTime As SYSTEMTIME, lpFileTime As FileTime) As LongDeclare Sub GetSystemTime Lib kernel32 (lpSystemTime As SYSTEMTIME)Declare Sub GetLocalTime Lib kernel32 (lpSystemTime As SYSTEMTIME

相关词条

相关搜索

其它词条