Windows API ——GetFileTime——獲取文件時(shí)間
??FILETIME結(jié)構(gòu)包含了文件或目錄的日期和時(shí)間信息:(自1601年1月1日以來(lái),單位為100納秒)
1?typedef?struct?_FILETIME?{
2?
3???DWORD?dwLowDateTime;?//低32位
4?
5???DWORD?dwHighDateTime;?//高32位
6?
7?}?FILETIME,?*PFILETIME;?
?
SYSTEMTIME結(jié)構(gòu)包含了用戶可識(shí)別的系統(tǒng)日期信息:
?1?typedef?struct?_SYSTEMTIME?{
?2?
?3?????WORD?wYear;//年
?4?
?5?????WORD?wMonth;//月
?6?
?7?????WORD?wDayOfWeek;//一周的第幾天
?8?
?9?????WORD?wDay;//日
10?
11?????WORD?wHour;//小時(shí)
12?
13?????WORD?wMinute;//分
14?
15?????WORD?wSecond;//秒
16?
17?????WORD?wMilliseconds;//毫秒
18?
19?}?SYSTEMTIME,?*PSYSTEMTIME;?
?
=======================================================
函數(shù)FileTimeToSystemTime用來(lái)將文件時(shí)間格式轉(zhuǎn)換為標(biāo)準(zhǔn)系統(tǒng)時(shí)間格式:
1?BOOL?WINAPI?FileTimeToSystemTime( 2? 3???__in???const?FILETIME?*lpFileTime,?//文件時(shí)間 4? 5???__out??LPSYSTEMTIME?lpSystemTime?//系統(tǒng)時(shí)間 6? 7?);
?
函數(shù)FileTimeToLocalTime用來(lái)將文件時(shí)間格式轉(zhuǎn)換為本地文件時(shí)間:
1?BOOL?WINAPI?FileTimeToLocalFileTime( 2???__in??????????const?FILETIME*?lpFileTime,//文件時(shí)間 3???__out?????????LPFILETIME?lpLocalFileTime//本地文件時(shí)間 4?);
?
函數(shù)SystemTimeToFileTime則是將標(biāo)準(zhǔn)系統(tǒng)時(shí)間轉(zhuǎn)換成文件時(shí)間格式:
?BOOL?WINAPI?SystemTimeToFileTime( ???__in???const?SYSTEMTIME?*lpSystemTime,//系統(tǒng)時(shí)間 ???__out??LPFILETIME?lpFileTime//文件時(shí)間 ?);
函數(shù)SystemTimeToTzSpecificLocalTime是將標(biāo)準(zhǔn)系統(tǒng)時(shí)間轉(zhuǎn)換為本地系統(tǒng)時(shí)間
1?BOOL?WINAPI?SystemTimeToTzSpecificLocalTime( 2???__in??????????LPTIME_ZONE_INFORMATION?lpTimeZone,//時(shí)區(qū)結(jié)構(gòu) 3???__in??????????LPSYSTEMTIME?lpUniversalTime,//系統(tǒng)時(shí)間 4???__out?????????LPSYSTEMTIME?lpLocalTime//本地時(shí)間 5?);
?
?
=======================================================
GetSystemTime函數(shù)用來(lái)獲得系統(tǒng)時(shí)間:
1?void?WINAPI?GetSystemTime( 2???__out??LPSYSTEMTIME?lpSystemTime 3?);
?
?GetFileTime函數(shù)用來(lái)獲得一個(gè)文件或目錄的創(chuàng)建的時(shí)間、最后訪問(wèn)的時(shí)間以及最后修改的時(shí)間:
1?BOOL?WINAPI?GetFileTime( 2???__in???????HANDLE?hFile,?//文件或目錄句柄 3???__out_opt??LPFILETIME?lpCreationTime,?//返回的創(chuàng)建的日期和時(shí)間信息 4???__out_opt??LPFILETIME?lpLastAccessTime,?//返回的最后訪問(wèn)的日期和時(shí)間信息 5???__out_opt??LPFILETIME?lpLastWriteTime?//返回的最后修改的日期和時(shí)間信息 6? 7?);
實(shí)例:
?
?1?CString?strPath("D:\test.txt");
?2?HANDLE?hFile?=?CreateFile(strPath,??????????????
?3???????????????????????????GENERIC_WRITE|?GENERIC_READ,??//必須有GENERIC_READ屬性才能得到時(shí)間?????
?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);//這里得到的時(shí)間是標(biāo)準(zhǔn)系統(tǒng)時(shí)間,也就是0時(shí)區(qū)的時(shí)間。
14?????GetLocalTime(&sysTime);//這里得到的是本地時(shí)間,也就是標(biāo)準(zhǔn)時(shí)間+時(shí)區(qū)時(shí)間
15?
16?????FILETIME?fCreateTime,?fAccessTime,?fWriteTime;
17?
18?????GetFileTime(&hFile,?&fCreateTime,?&fAccessTime,?&fWriteTime);//獲取文件時(shí)間
19?
20?????CString?strTime;
21?
22?//將文件時(shí)間轉(zhuǎn)換為本地系統(tǒng)時(shí)間的兩種方式:
23?//(1)
24?????FileTimeToLocalFileTime(&fCreateTime,&localTime);//將文件時(shí)間轉(zhuǎn)換為本地文件時(shí)間
25?????FileTimeToSystemTime(&localTime,?&sysTime);//將文件時(shí)間轉(zhuǎn)換為本地系統(tǒng)時(shí)間
26?
27?//(2)
28?????FileTimeToSystemTime(&fCreateTime,?&sysTime);//將文件時(shí)間轉(zhuǎn)換為標(biāo)準(zhǔn)系統(tǒng)時(shí)間
29?????SystemTimeToTzSpecificLocalTime(&sysTime,?&sysTime)//將標(biāo)準(zhǔn)系統(tǒng)時(shí)間轉(zhuǎn)換為本地系統(tǒng)時(shí)間
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?}?





