如何在C++中将filetime时间转化为字符串?

将filetime转化为systemtime



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类型:

  1. SYSTEMTIME st;     
  2.   
  3. CString strDate,strTime;     
  4.   
  5. GetLocalTime(&st);     
  6.   
  7. strDate.Format("%4d-%2d-%2d",st.wYear,st.wMonth,st.wDay);     
  8.   
  9. 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是一个__int64。可以这样转化成__int64
filetime st;


__int64 d 
= *(__int64 *)& st;

// or

//__int64 d2;
//memcpy(
& d2, & st, sizeof (d2));

(d -  116444736000000000)  /  10000000

参见:

FileTime如何转换为Time_t

FILETIME, SYSTEMTIME 与 time_t 相互转换

Windows API的时间结构体、时间转换及时间获取


你可能感兴趣的:(如何在C++中将filetime时间转化为字符串?)