c / c ++微秒时间戳

英国广播公司

我使用这段代码在c / c ++中获得了以微秒为单位的时间戳。但看起来不像微秒。我也不知道是否有格式化的方法。

timeval curTime;
gettimeofday(&curTime, NULL);
int milli = curTime.tv_usec / 1000;
unsigned long micro = curTime.tv_usec*(uint64_t)1000000+curTime.tv_usec;

char buffer [80];
//localtime is not thread safe
strftime(buffer, 80, "%Y-%m-%d %H:%M:%S", localtime(&curTime.tv_sec));

char currentTime[84] = "";
char currentTime2[80] = "";
sprintf(currentTime, "%s:%3d", buffer, milli);
sprintf(currentTime2, "%s:%Lu", buffer, micro); 
printf("time %s, hptime %s\n", currentTime, currentTime2);

什么是正确的输出格式?谢谢!

深渊

亚秒级的典型打印格式使用小数点指示符(.在许多语言环境中),因此59秒钟可能看起来像59.00013。

micro您创建变量将使用当前的微秒计数,将其乘以1000000,然后再次添加当前的微秒计数;我希望您打算单独使用微秒计数,或者与秒计数一起使用:

unsigned long micro = curTime.tv_usec*(uint64_t)1000000+curTime.tv_usec;

应该写成

unsigned long micro = curTime.tv_sec*(uint64_t)1000000+curTime.tv_usec;

将秒和微秒数相加在一起

要将其写入输出,您可以考虑更改行

sprintf(currentTime2, "%s:%Lu", buffer, micro);

sprintf(currentTime2, "%s.%Lu", buffer, curTime.tv_usec);

使用更改的micro定义,您还可以输出

sprintf(currentSeconds, "%.6f", micro / 1000000);

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

对于Windows C ++,测量时间(毫秒或微秒)

来自分类Dev

在C ++中获得准确的执行时间(微秒)

来自分类Dev

C#时间戳发行

来自分类Dev

C#Unix时间戳

来自分类Dev

c中的时间戳,以毫秒为单位

来自分类Dev

C4创建时间戳

来自分类Dev

在C ++中从X毫秒获取时间戳

来自分类Dev

从C#地图中删除时间戳

来自分类Dev

C#MySQLBulkLoader覆盖时间戳

来自分类Dev

XML节点最新时间戳C#

来自分类Dev

DateTime解析ANSI C时间戳

来自分类Dev

C#中缓存的正确时间戳

来自分类Dev

如何使用C#减去时间戳

来自分类Dev

附加时间戳并移动文件 C#

来自分类Dev

C#日期时间以微秒为单位插入SQL Server值

来自分类Dev

用C传递的日期时间来生产UNIX时间戳

来自分类Dev

SQL 时间戳到 C# 上的日期时间

来自分类Dev

KDB 创建微秒时间戳

来自分类Dev

C ++带有时间戳的断言

来自分类Dev

sqlite比较时间戳和C#中的DateTime

来自分类Dev

无法在C#中解析Oracle时间戳

来自分类Dev

需要制作C#时间戳,但是文档在Ruby中

来自分类Dev

在C语言中可读的十六进制时间戳

来自分类Dev

iOS系统时间戳-C#Monotouch / Xamarin

来自分类Dev

更正C代码日志文件上的时间戳

来自分类Dev

C:字符串到毫秒的时间戳

来自分类Dev

不同的C ++时钟记录时间戳的利弊是什么?

来自分类Dev

在C ++ 11中节省时间戳

来自分类Dev

C ++带有时间戳的断言