如何获得相对时间?

liqstudio 2009-02-20 05:29:57
如以下代码所示,我想通过这段代码得到2005年1月7日至现在有多少年多少天多少日,但是结果不对,请各位大虾指教!

SYSTEMTIME st_myCurrentTime,st_MyOldTime;
GetLocalTime(&st_myCurrentTime);

st_MyOldTime.wYear=2005;
st_MyOldTime.wMonth=1;
st_MyOldTime.wDay=7;

//将SYSTEMTIME格式的相对时间转换为FILETIME格式
FILETIME ft_myCurrentTime,ft_myOldTime;
SystemTimeToFileTime(&st_myCurrentTime,&ft_myCurrentTime);
SystemTimeToFileTime(&st_MyOldTime,&ft_myOldTime);

//将FILETIME格式的相对时间转换为ULARGE_INTEGER格式
ULARGE_INTEGER uli_MyCurrentTime,uli_myOldTime,uli_myAge;
uli_MyCurrentTime.HighPart=ft_myCurrentTime.dwHighDateTime;
uli_MyCurrentTime.LowPart=ft_myCurrentTime.dwLowDateTime;
uli_myOldTime.HighPart=ft_myOldTime.dwHighDateTime;
uli_myOldTime.LowPart=ft_myOldTime.dwLowDateTime;

//计算时间差
uli_myAge.QuadPart=uli_MyCurrentTime.QuadPart-uli_myOldTime.QuadPart;

//将ULARGE_INTEGER格式的相对时间转换为FILETIME格式
FILETIME ft_myAge;
ft_myAge.dwHighDateTime=uli_myAge.HighPart;
ft_myAge.dwLowDateTime=uli_myAge.LowPart;

//再将FILETIME格式的相对时间转换为SYSTEMTIME格式
FileTimeToSystemTime(&ft_myAge,&st_MyAge);
...全文
119 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
liqstudio 2009-02-24
  • 打赏
  • 举报
回复
多谢comiunknown的提示,结贴了!
yihan7h 2009-02-23
  • 打赏
  • 举报
回复
就是换算单位的问题。。。
毫秒到天……
comiunknown 2009-02-20
  • 打赏
  • 举报
回复
FILETIME实际上是2个DWORD类型,用来保存当前时间距离1601年1月1号0时0分0秒有多少100*纳秒,所以你完全可以把2个FILETIME的dwLowDateTime,dwHighDateTime分别相减,再把2个相减的结果拼成一个新的FILETIME,再将得到的这个FILETIME转换成SYSTEMTIME,即2个FILETIME之间的时间差。
儿大不由爷 2009-02-20
  • 打赏
  • 举报
回复
先转换位毫秒,相减,在计算天数;
或者用CTime相减,CTimeSpan

7,655

社区成员

发帖
与我相关
我的任务
社区描述
Windows Phone是微软发布的一款手机操作系统,它将微软旗下的Xbox LIVE游戏、Zune音乐与独特的视频体验整合至手机中。
社区管理员
  • Windows客户端开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧