您的位置:首页 > 其它

WINDOWS API ---GetFileTime() FileTimeToLocalFileTime() FileTimeToSystimeTime()

2013-11-21 15:39 423 查看
FILETIME结构包含了文件或目录的日期和时间信息:(自1601年1月1日以来,单位为100纳秒)



1 typedef struct _FILETIME {
2
3   DWORD dwLowDateTime; //低32位
4
5   DWORD dwHighDateTime; //高32位
6
7 } FILETIME, *PFILETIME;




SYSTEMTIME结构包含了用户可识别的系统日期信息:



1 typedef struct _SYSTEMTIME {
2
3     WORD wYear;//年
4
5     WORD wMonth;//月
6
7     WORD wDayOfWeek;//一周的第几天
8
9     WORD wDay;//日
10
11     WORD wHour;//小时
12
13     WORD wMinute;//分
14
15     WORD wSecond;//秒
16
17     WORD wMilliseconds;//毫秒
18
19 } SYSTEMTIME, *PSYSTEMTIME;




=======================================================

函数FileTimeToSystemTime用来将文件时间格式转换为标准系统时间格式:



1 BOOL WINAPI FileTimeToSystemTime(
2
3   __in   const FILETIME *lpFileTime, //文件时间
4
5   __out  LPSYSTEMTIME lpSystemTime //系统时间
6
7 );




函数FileTimeToLocalTime用来将文件时间格式转换为本地文件时间:

1 BOOL WINAPI FileTimeToLocalFileTime(
2   __in          const FILETIME* lpFileTime,//文件时间
3   __out         LPFILETIME lpLocalFileTime//本地文件时间
4 );


函数SystemTimeToFileTime则是将标准系统时间转换成文件时间格式:

BOOL WINAPI SystemTimeToFileTime(
__in   const SYSTEMTIME *lpSystemTime,//系统时间
__out  LPFILETIME lpFileTime//文件时间
);


函数SystemTimeToTzSpecificLocalTime是将标准系统时间转换为本地系统时间

1 BOOL WINAPI SystemTimeToTzSpecificLocalTime(
2   __in          LPTIME_ZONE_INFORMATION lpTimeZone,//时区结构
3   __in          LPSYSTEMTIME lpUniversalTime,//系统时间
4   __out         LPSYSTEMTIME lpLocalTime//本地时间
5 );


=======================================================

GetSystemTime函数用来获得系统时间:

1 void WINAPI GetSystemTime(
2   __out  LPSYSTEMTIME lpSystemTime
3 );


GetFileTime函数用来获得一个文件或目录的创建的时间、最后访问的时间以及最后修改的时间:



1 BOOL WINAPI GetFileTime(
2   __in       HANDLE hFile, //文件或目录句柄
3   __out_opt  LPFILETIME lpCreationTime, //返回的创建的日期和时间信息
4   __out_opt  LPFILETIME lpLastAccessTime, //返回的最后访问的日期和时间信息
5   __out_opt  LPFILETIME lpLastWriteTime //返回的最后修改的日期和时间信息
6
7 );




实例:



1 CString strPath("D:\\test.txt");
2 HANDLE hFile = CreateFile(strPath,
3                           GENERIC_WRITE| GENERIC_READ,  //必须有GENERIC_READ属性才能得到时间
4                           FILE_SHARE_READ,
5                           NULL,
6                           TRUNCATE_EXISTING,
7                           FILE_ATTRIBUTE_NORMAL,
8                           NULL);
9
10 if (hFile != INVALID_HANDLE_VALUE)
11 {
12     SYSTEMTIME sysTime;
13     GetSystemTime(&sysTime);//这里得到的时间是标准系统时间,也就是0时区的时间。
14     GetLocalTime(&sysTime);//这里得到的是本地时间,也就是标准时间+时区时间
15
16     FILETIME fCreateTime, fAccessTime, fWriteTime;
17
18     GetFileTime(&hFile, &fCreateTime, &fAccessTime, &fWriteTime);//获取文件时间
19
20     CString strTime;
21
22 //将文件时间转换为本地系统时间的两种方式:
23 //(1)
24     FileTimeToLocalFileTime(&fCreateTime,&localTime);//将文件时间转换为本地文件时间
25     FileTimeToSystemTime(&localTime, &sysTime);//将文件时间转换为本地系统时间
26
27 //(2)
28     FileTimeToSystemTime(&fCreateTime, &sysTime);//将文件时间转换为标准系统时间
29     SystemTimeToTzSpecificLocalTime(&sysTime, &sysTime)//将标准系统时间转换为本地系统时间
30
31         strTime.Format(_T("%4d年%2d月%2d日,%2d:%2d:%2d"),
32         sysTime.wYear,
33         sysTime.wMonth,
34         sysTime.wDay,
35         sysTime.wHour,
36         sysTime.wMinute,
37         sysTime.wSecond
38         );
39 }


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐