SYSTEMTIME 与 time_t 之间的转换,计算2个SYSTEMTIME的时间差

Posted findumars

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SYSTEMTIME 与 time_t 之间的转换,计算2个SYSTEMTIME的时间差相关的知识,希望对你有一定的参考价值。

[cpp] view plain copy
 
  1. time_t systemtime_to_time_t(const SYSTEMTIME& st)  
  2. {  
  3.     struct tm gm = {st.wSecond, st.wMinute, st.wHour, st.wDay, st.wMonth-1, st.wYear-1900, st.wDayOfWeek, 0, 0};  
  4.     return mktime(&gm);  
  5. }  
  6.   
  7. SYSTEMTIME time_t_to_systemtime(time_t t)  
  8. {  
  9.     tm temptm = *localtime(&t);  
  10.     SYSTEMTIME st = {1900 + temptm.tm_year,   
  11.         1 + temptm.tm_mon,   
  12.         temptm.tm_wday,   
  13.         temptm.tm_mday,   
  14.         temptm.tm_hour,   
  15.         temptm.tm_min,   
  16.         temptm.tm_sec,   
  17.         0};  
  18.     return st;  
  19. }  


https://blog.csdn.net/hellokandy/article/details/51329446

 

MFC版本的计算两个SYSTEMTIME之间的时间差,返回毫秒:

 

[cpp] view plain copy
 
  1. __int64 TimeDiff(SYSTEMTIME left, SYSTEMTIME right)    
  2. {  
  3.     CTime tmLeft(left.wYear, left.wMonth, left.wDay, 0, 0, 0);  
  4.     CTime tmRight(right.wYear, right.wMonth, right.wDay, 0, 0, 0);  
  5.       
  6.     CTimeSpan sp = tmLeft - tmRight;  
  7.     long MillisecondsL = (left.wHour*3600 + left.wMinute*60 + left.wSecond)*1000 + left.wMilliseconds;    
  8.     long MillisecondsR = (right.wHour*3600 + right.wMinute*60 + right.wSecond)*1000 + right.wMilliseconds;    
  9.   
  10.     return  (__int64)sp.GetDays()*86400000 + (MillisecondsL - MillisecondsR);//此处返回毫秒  
  11. }  

https://blog.csdn.net/hellokandy/article/details/51329183

以上是关于SYSTEMTIME 与 time_t 之间的转换,计算2个SYSTEMTIME的时间差的主要内容,如果未能解决你的问题,请参考以下文章

如何给一个CTime类型的对象赋值

使用适当的 tm_mday 将两个 time_t 之间的差异转换为 tm

C/C++输入两个任意日期求相隔天数

C语言中系统时间函数是怎么用的??

将纪元转换为 time_t

从 time_t 和 tm 转换的错误值