先将filetime转化为systemtime
再
sprintf(strTime,"%d-%d-%d %d:%d:%d",st.wYear,st.wMonth,st.wDay,st.wHour,st.wMinute,st.wSecond);
再
SYSTEMTIME st;
char strTime[128];
sprintf(strTime,"%d-%d-%d %d:%d:%d",st.wYear,st.wMonth,st.wDay,st.wHour,st.wMinute,st.wSecond);
注释1:
对于SYSTEMTIME的显示也可以使用mfc中的Cstring类型:
- 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);
记住此时要将cstring所在头文件(以及dll)包含到本代码所在cpp文件上即可运行,不一定受限于只能在MFC下才能运行。
注释2:
如果编译器中的long类型为4字节时,则 time_t(typedef time_t __int64)和
filetime(filetime结构体中有两个unsigned long类型的变量)占用字节大小一样(__int64是有符号吧),则filetime先可以转化为time_t,再由time_t转化为tm:
filetime st;
__int64 d = *(__int64 *)& st;
// or
//__int64 d2;
//memcpy( & d2, & st, sizeof (d2));
(d - 116444736000000000) / 10000000
__int64 d = *(__int64 *)& st;
// or
//__int64 d2;
//memcpy( & d2, & st, sizeof (d2));
(d - 116444736000000000) / 10000000
参见: