Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1301208
  • 博文数量: 548
  • 博客积分: 7597
  • 博客等级: 少将
  • 技术积分: 4224
  • 用 户 组: 普通用户
  • 注册时间: 2010-12-15 13:21
个人简介

嵌入式软件工程师&&太极拳

文章分类

全部博文(548)

文章存档

2014年(10)

2013年(76)

2012年(175)

2011年(287)

分类: 嵌入式

2012-02-24 09:32:08

如果为SYSTEMTIME,可以通过SystemTimeToFileTime先转到FILETIME

 

  1. #define NOMINMAX

  2. #include <algorithm>
  3. #include <windows.h>

  4. SYSTEMTIME systemtime_difference(SYSTEMTIME const& st1, SYSTEMTIME const& st2)
  5. {
  6.     FILETIME ft1;
  7.     SystemTimeToFileTime(&st1, &ft1);
  8.     ULARGE_INTEGER const u1 = { ft1.dwLowDateTime, ft1.dwHighDateTime };

  9.     FILETIME ft2;
  10.     SystemTimeToFileTime(&st2, &ft2);
  11.     ULARGE_INTEGER const u2 = { ft2.dwLowDateTime, ft2.dwHighDateTime };

  12.     ULARGE_INTEGER u3;
  13.     u3.QuadPart = std::max(u1.QuadPart, u2.QuadPart) - std::min(u1.QuadPart, u2.QuadPart);
  14.     FILETIME const ft3 = { u3.LowPart, u3.HighPart };

  15.     SYSTEMTIME st3;
  16.     FileTimeToSystemTime(&ft3, &st3);
  17.     // FILETIME's starting point is 1601-01-01
  18.     st3.wYear -= 1601;
  19.     st3.wMonth -= 1;
  20.     st3.wDay -= 1;
  21.     st3.wDayOfWeek = 0; // useless for this purpose, make it always 0 so it's always ignored
  22.     return st3;
  23. }

  24. int main()
  25. {
  26.     SYSTEMTIME const st1 = { 2008, 10, 3, 15, 6, 5, 31, 12 };
  27.     SYSTEMTIME const st2 = { 2009, 12, 0, 27, 10, 7, 59, 56 };
  28.     SYSTEMTIME st3 = systemtime_difference(st1, st2);

  29.     return 0;
  30. }
感谢:
 
阅读(1842) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~