C++获取系统当前时间(精确到微秒)
获取系统当前时间
在调试、日志输出、代码优化时,我们常常需要获得系统的时间。在一些性能要求高的代码优化时,对时间的精确度还比较高。在网上找不高质量的代码,便自己研究了一下,代码如下(能满足跨平台的要求,单位精确到微秒):
#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++获取系统当前时间(精确到微秒)相关推荐
- c 获取当前时间插入oracle数据库,Oracle如何获取系统当前时间等操作实例,c++获取系统时间...
Oracle如何获取系统当前时间等操作实例,c++获取系统时间 获取系统当前时间 date类型的 select sysdate from dual; char类型的 select to_char(sy ...
- oracle 取系统当前年份_Oracle如何获取系统当前时间等操作实例
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 获取系统当前时间 date类型的 ? 1 select sysdate from dual; char类型的 ? 123456 select to_cha ...
- C/C++获取系统当前时间
C/C++获取系统当前时间 C库中与系统时间相关的函数定义在<time.h>头文件中, C++定义在<ctime>头文件中. 一.time(time_t*)函数 函数定义如下: ...
- sap获取系统时间_获取系统当前时间
NSString *appKey() { // // 获取系统当前时间 // NSDate * date = [NSDate date]; // NSTimeInterval sec = [date ...
- java获取系统当前时间格式化_java 获取系统当前时间并格式化
java 获取系统当前时间并格式化 CreateTime--2018年5月9日11:41:00 Author:Marydon 实现方式有三种 updateTime--2018年7月23日09点32分 ...
- android service 样例(电话录音和获取系统当前时间)
关于android service 的具体解释请參考: android四大组件--android service具体解释.以下将用两个实例具体呈现Android Service的两种实现. 一个是st ...
- 获取系统当前日期时间
今天学习了一个获取系统当前日期时间的方式. 代码如下: #include <iostream> #include <ctime> using namespace std; in ...
- C# 获取系统开机时间
C# 获取系统开机时间 原文:C# 获取系统开机时间 /// /// 获取系统开机时间 /// /// private DateTi ...
- js获取系统当前时间,实现钟表功能
<body> <div id="show"></div> <script> //获取系统当前时间,实现钟表功能 fu ...
最新文章
- 从业务到平台的思维转变
- JZOJ 4161. 于神之怒
- 【Linux网络编程】原始套接字编程
- 浮点数规格化-不同基数的规格化
- CKEditor安装
- 解决:scripts/kconfig/zconf.tab.c:199:24: fatal error: zconf.hash.c: No such file or directory
- 网络协议端口号说明(转)
- JS实现类似QQ好友头像hover时显示资料卡的效果
- MapXtreme2005中关于使用动画图层的一个方法
- 转载:人生真相之为何你应该假装自己是一个电脑白痴(原文pconline)
- 算法:判断二叉树是否包含链表Linked List in Binary Tree
- 论文插入参考文献神器——EndNote(包括EndNoteX9安装和破解)
- 为什么Web前端薪资如此高呢?总结了这4个原因
- robots文件简介
- 微信大数据挑战赛方案总结
- 儿童发烧、高热,警惕病毒性感冒【程序员爸爸们学着点】
- 大数据综合实验(一)
- 辐射3特殊武器拿法(修正版)
- 安卓系统python编程pygame_【Python游戏编程01--初步认识pygame】
- Docker入门(二)
热门文章
- ACL跨平台(支持LINUX,WIN32,Solaris,MacOS,FreeBSD)的网络通信库及服务器编程框架
- 使用VScode实现W3school的导航栏
- 水晶报表之分页预留空白方便打印信纸
- Oracle SQL学习笔记
- 微信群里的群工具怎么添加群工具微信
- 【NLP-新闻文本分类】1 数据分析和探索
- LPDDR5 之Link ECC
- 本构二次开发 c语言,在ansys中使用usermat.F对超弹性本构Neo-Hookean进行二次开发的实例 - 仿真模拟 - 小木虫 - 学术 科研 互动社区...
- 老杨说运维 | 企业数字化转型中,统一监控的必要性
- python 定时器使用