Windows 获取文件操作时间的方法
2015-12-11 18:21
274 查看
一、获取文件的修改时间
/*
typedef struct _WIN32_FIND_DATAA {
DWORD dwFileAttributes;
FILETIME ftCreationTime;//获取文件创建时间
FILETIME ftLastAccessTime;//获取文件访问时间
FILETIME ftLastWriteTime;//获取文件修改时间
DWORD nFileSizeHigh;//获取文件大小高32位
DWORD nFileSizeLow;//获取文件大小低32位
DWORD dwReserved0;
DWORD dwReserved1;
CHAR cFileName[ MAX_PATH ];
CHAR cAlternateFileName[ 14 ];
#ifdef _MAC
DWORD dwFileType;
DWORD dwCreatorType;
WORD wFinderFlags;
#endif
} WIN32_FIND_DATAA, *PWIN32_FIND_DATAA, *LPWIN32_FIND_DATAA;
*/``
举例:
#include<afx.h>////头文件include<afx.h>
int main(int argc,char *argv[])
{
WIN32_FIND_DATA ffd ;
//Filename可以为文件或者文件夹,如果为文件夹则必须保证末尾没有文件分隔符‘\\’。
char Filename[128]="D:\\文件测试.txt";
HANDLE hFind = FindFirstFile(Filename,&ffd);
printf("Filename=%s\r\n",ffd.cFileName);//打印文件名字
printf("FileSize=%d\r\n",ffd.nFileSizeLow);//如果不是文件夹:打印文件大小(单位:字节)
SYSTEMTIME stUTC, stLocal;//UTC时间变量,当地时间变量
FileTimeToSystemTime(&(ffd.ftLastWriteTime), &stUTC);//获取最后一次修改时间,获取UTC格林威治时间
printf("stUTC:%d. %d %d, %d:%d\r\n",
stUTC.wDay,
stUTC.wMonth,
stUTC.wYear,
stUTC.wHour,
stUTC.wMinute
);//显示格林威治UTC时间
SystemTimeToTzSpecificLocalTime(NULL, &stUTC, &stLocal);//时间转换,转换为当地时间
//显示当地时间
printf("stLocal:%d. %d %d, %d:%d\r\n",stLocal.wDay,stLocal.wMonth,stLocal.wYear,stLocal.wHour,stLocal.wMinute);
SystemTimeToTzSpecificLocalTime(NULL, &stUTC, &stLocal);//时间转换,转换为当地时间
printf("stLocal:%d. %d %d, %d:%d\r\n",
stLocal.wDay,
stLocal.wMonth,
stLocal.wYear,
stLocal.wHour,
stLocal.wMinute
);//显示当地时间
return 0;
}
2: 得到系统时间日期(使用GetLocalTime)
SYSTEMTIME st;
CString strDate,strTime;
GetLocalTime(&st);
strDate.Format("%4d-%2d-%2d",st.wYear,st.wMonth,st.wDay);
strTime.Format("%2d:%2d:%2d",st.wHour,st.wMinute,st.wSecond);
3.使用GetTickCount//获取程序运行时间
long t1=GetTickCount();//程序段开始前取得系统运行时间(ms)
Sleep(500); long t2=GetTickCount();//程序段结束后取得系统运行时间(ms)
str.Format("time:%dms",t2-t1);//前后之差即 程序运行时间
AfxMessageBox(str);//获取系统运行时间
long t=GetTickCount();
CString str,str1;
str1.Format("系统已运行 %d时",t/3600000);
str=str1; t%=3600000;
str1.Format("%d分",t/60000);
str+=str1; t%=60000;
str1.Format("%d秒",t/1000);
str+=str1; AfxMessageBox(str);
/*
typedef struct _WIN32_FIND_DATAA {
DWORD dwFileAttributes;
FILETIME ftCreationTime;//获取文件创建时间
FILETIME ftLastAccessTime;//获取文件访问时间
FILETIME ftLastWriteTime;//获取文件修改时间
DWORD nFileSizeHigh;//获取文件大小高32位
DWORD nFileSizeLow;//获取文件大小低32位
DWORD dwReserved0;
DWORD dwReserved1;
CHAR cFileName[ MAX_PATH ];
CHAR cAlternateFileName[ 14 ];
#ifdef _MAC
DWORD dwFileType;
DWORD dwCreatorType;
WORD wFinderFlags;
#endif
} WIN32_FIND_DATAA, *PWIN32_FIND_DATAA, *LPWIN32_FIND_DATAA;
*/``
举例:
#include<afx.h>////头文件include<afx.h>
int main(int argc,char *argv[])
{
WIN32_FIND_DATA ffd ;
//Filename可以为文件或者文件夹,如果为文件夹则必须保证末尾没有文件分隔符‘\\’。
char Filename[128]="D:\\文件测试.txt";
HANDLE hFind = FindFirstFile(Filename,&ffd);
printf("Filename=%s\r\n",ffd.cFileName);//打印文件名字
printf("FileSize=%d\r\n",ffd.nFileSizeLow);//如果不是文件夹:打印文件大小(单位:字节)
SYSTEMTIME stUTC, stLocal;//UTC时间变量,当地时间变量
FileTimeToSystemTime(&(ffd.ftLastWriteTime), &stUTC);//获取最后一次修改时间,获取UTC格林威治时间
printf("stUTC:%d. %d %d, %d:%d\r\n",
stUTC.wDay,
stUTC.wMonth,
stUTC.wYear,
stUTC.wHour,
stUTC.wMinute
);//显示格林威治UTC时间
SystemTimeToTzSpecificLocalTime(NULL, &stUTC, &stLocal);//时间转换,转换为当地时间
//显示当地时间
printf("stLocal:%d. %d %d, %d:%d\r\n",stLocal.wDay,stLocal.wMonth,stLocal.wYear,stLocal.wHour,stLocal.wMinute);
SystemTimeToTzSpecificLocalTime(NULL, &stUTC, &stLocal);//时间转换,转换为当地时间
printf("stLocal:%d. %d %d, %d:%d\r\n",
stLocal.wDay,
stLocal.wMonth,
stLocal.wYear,
stLocal.wHour,
stLocal.wMinute
);//显示当地时间
return 0;
}
2: 得到系统时间日期(使用GetLocalTime)
SYSTEMTIME st;
CString strDate,strTime;
GetLocalTime(&st);
strDate.Format("%4d-%2d-%2d",st.wYear,st.wMonth,st.wDay);
strTime.Format("%2d:%2d:%2d",st.wHour,st.wMinute,st.wSecond);
3.使用GetTickCount//获取程序运行时间
long t1=GetTickCount();//程序段开始前取得系统运行时间(ms)
Sleep(500); long t2=GetTickCount();//程序段结束后取得系统运行时间(ms)
str.Format("time:%dms",t2-t1);//前后之差即 程序运行时间
AfxMessageBox(str);//获取系统运行时间
long t=GetTickCount();
CString str,str1;
str1.Format("系统已运行 %d时",t/3600000);
str=str1; t%=3600000;
str1.Format("%d分",t/60000);
str+=str1; t%=60000;
str1.Format("%d秒",t/1000);
str+=str1; AfxMessageBox(str);
相关文章推荐
- C/C++常用算法【C语言顺序查找(顺序表)】【2】
- map的整理——面试问题
- php5.6的安装
- fastjson应用
- 【Solutions系列】Upsell Analysis,销售分析模版
- 解析平移动画本位的理解
- Angularjs 分页控件
- java中StringBuilder、StringBuffer、String类之间的关系
- Linux C编程---指针数组简析(二维数组、多级指针)
- Progressbar的使用以及ListView的使用
- //兼容苹果手机的SDK微信上传图片 下载到服务器
- 比 H5 应用多一点原生应用小一点,流应用能不能将 H5 应用真正推广起来?
- 1020. 月饼
- android 打包 eclipse 错误 Export aborted because fatal lint errors were found
- tomcat的Host配置
- IT资源专业搜索-www.easysoo.cn
- RadioGroup,RadioButton CheckBox控件的使用
- Swift 利用UIScrollView和两个UIImageView实现图片轮滚
- javascript AOP实现
- Android Studio 使用中遇到的问题解决