获取系统当前时间

在调试、日志输出、代码优化时,我们常常需要获得系统的时间。在一些性能要求高的代码优化时,对时间的精确度还比较高。在网上找不高质量的代码,便自己研究了一下,代码如下(能满足跨平台的要求,单位精确到微秒):

#ifdef _WIN32
#include <windows.h>
#else
#include <time.h>
#endif  // _WIND32// 定义64位整形
#if defined(_WIN32) && !defined(CYGWIN)
typedef __int64 int64_t;
#else
typedef long long int64t;
#endif  // _WIN32// 获取系统的当前时间,单位微秒(us)
int64_t GetSysTimeMicros()
{
#ifdef _WIN32
// 从1601年1月1日0:0:0:000到1970年1月1日0:0:0:000的时间(单位100ns)
#define EPOCHFILETIME   (116444736000000000UL) FILETIME ft; LARGE_INTEGER li;int64_t tt = 0;GetSystemTimeAsFileTime(&ft);li.LowPart = ft.dwLowDateTime;li.HighPart = ft.dwHighDateTime;// 从1970年1月1日0:0:0:000到现在的微秒数(UTC时间)tt = (li.QuadPart - EPOCHFILETIME) /10;return tt;
#elsetimeval tv;gettimeofday(&tv, 0);return (int64_t)tv.tv_sec * 1000000 + (int64_t)tv.tv_usec;
#endif // _WIN32return 0;
}

代码说明

在类Unix平台(Linux、OS-X)使用gettimeofday方法,这个简单,没什么好说,自己看代码。在Windows平台使用GetSystemTimeAsFileTime方法,这个需解释一下。

GetSystemTimeAsFileTime的输出参数是LPFILETIME,其结构如下:

typedef struct _FILETIME {DWORD dwLowDateTime;DWORD dwHighDateTime;
} FILETIME, *PFILETIME;

这个结构可表示为一个64位的数值,两个成为分别代码低32位和高32位,代表1601年1月1日开始到现在的计数器,计数间隔为100纳秒。

li.LowPart = ft.dwLowDateTime;
li.HighPart = ft.dwHighDateTime;

是将结构体转换成64位整形LARGE_INTEGER::QuadPart。
#define EPOCHFILETIME (116444736000000000UL)表示从1601年1月1日0:0:0:000到1970年1月1日0:0:0:000的时间(单位100ns)。

除特殊注明,阳光日志下文章均为原创,转载转载请注明出处

本文地址:http://sunlogging.com/2016/05/05/c获取系统当前时间精确到微秒/

C++获取系统当前时间(精确到微秒)相关推荐

  1. c 获取当前时间插入oracle数据库,Oracle如何获取系统当前时间等操作实例,c++获取系统时间...

    Oracle如何获取系统当前时间等操作实例,c++获取系统时间 获取系统当前时间 date类型的 select sysdate from dual; char类型的 select to_char(sy ...

  2. oracle 取系统当前年份_Oracle如何获取系统当前时间等操作实例

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 获取系统当前时间 date类型的 ? 1 select sysdate from dual; char类型的 ? 123456 select to_cha ...

  3. C/C++获取系统当前时间

    C/C++获取系统当前时间 C库中与系统时间相关的函数定义在<time.h>头文件中, C++定义在<ctime>头文件中. 一.time(time_t*)函数 函数定义如下: ...

  4. sap获取系统时间_获取系统当前时间

    NSString *appKey() { // // 获取系统当前时间 // NSDate * date = [NSDate date]; // NSTimeInterval sec = [date ...

  5. java获取系统当前时间格式化_java 获取系统当前时间并格式化

    java 获取系统当前时间并格式化 CreateTime--2018年5月9日11:41:00 Author:Marydon 实现方式有三种 updateTime--2018年7月23日09点32分 ...

  6. android service 样例(电话录音和获取系统当前时间)

    关于android service 的具体解释请參考: android四大组件--android service具体解释.以下将用两个实例具体呈现Android Service的两种实现. 一个是st ...

  7. 获取系统当前日期时间

    今天学习了一个获取系统当前日期时间的方式. 代码如下: #include <iostream> #include <ctime> using namespace std; in ...

  8. C# 获取系统开机时间

    C# 获取系统开机时间 原文:C# 获取系统开机时间 ///         ///  获取系统开机时间          ///         ///         private DateTi ...

  9. js获取系统当前时间,实现钟表功能

    <body> <div id="show"></div> <script>     //获取系统当前时间,实现钟表功能     fu ...

最新文章

  1. 从业务到平台的思维转变
  2. JZOJ 4161. 于神之怒
  3. 【Linux网络编程】原始套接字编程
  4. 浮点数规格化-不同基数的规格化
  5. CKEditor安装
  6. 解决:scripts/kconfig/zconf.tab.c:199:24: fatal error: zconf.hash.c: No such file or directory
  7. 网络协议端口号说明(转)
  8. JS实现类似QQ好友头像hover时显示资料卡的效果
  9. MapXtreme2005中关于使用动画图层的一个方法
  10. 转载:人生真相之为何你应该假装自己是一个电脑白痴(原文pconline)
  11. 算法:判断二叉树是否包含链表Linked List in Binary Tree
  12. 论文插入参考文献神器——EndNote(包括EndNoteX9安装和破解)
  13. 为什么Web前端薪资如此高呢?总结了这4个原因
  14. robots文件简介
  15. 微信大数据挑战赛方案总结
  16. 儿童发烧、高热,警惕病毒性感冒【程序员爸爸们学着点】
  17. 大数据综合实验(一)
  18. 辐射3特殊武器拿法(修正版)
  19. 安卓系统python编程pygame_【Python游戏编程01--初步认识pygame】
  20. Docker入门(二)

热门文章

  1. ACL跨平台(支持LINUX,WIN32,Solaris,MacOS,FreeBSD)的网络通信库及服务器编程框架
  2. 使用VScode实现W3school的导航栏
  3. 水晶报表之分页预留空白方便打印信纸
  4. Oracle SQL学习笔记
  5. 微信群里的群工具怎么添加群工具微信
  6. 【NLP-新闻文本分类】1 数据分析和探索
  7. LPDDR5 之Link ECC
  8. 本构二次开发 c语言,在ansys中使用usermat.F对超弹性本构Neo-Hookean进行二次开发的实例 - 仿真模拟 - 小木虫 - 学术 科研 互动社区...
  9. 老杨说运维 | 企业数字化转型中,统一监控的必要性
  10. python 定时器使用