关于以毫秒为单位获取时间

时间:2010-11-03 10:12:55

标签: c time qnx

我正在QNX平台上使用C语言编写记录器,使用Momnetics以下列格式打印时间

2010-11-02 14:45:15.000

我可以使用

获取日期,小时,分钟和秒
 time(&timeSpec);
 struct tm gmt;
 int iSysTimeSec = timeSpec;
 gmtime_r((time_t *)&iSysTimeSec, &gmt);
 sprintf(&MsgStamp[0], SYS_MSG_STAMP_PRINTF_FORMAT, gmt.tm_year+1900, gmt.tm_mon + 1, gmt.tm_mday, gmt.tm_hour, gmt.tm_min, gmt.tm_sec, iSysTimeMs );

问题是如何使用QNX Momentics获得毫秒粒度。

我尝试使用QNX特定的颗粒度毫秒 int iSysTimeMs =((ClockCycles()* 1000)/ SYSPAGE_ENTRY(qtime) - > cycles_per_sec)%1000;

但我想做这个POSIX方式,以便它是可移植的。我们怎么做?

谢谢! 文卡塔

2 个答案:

答案 0 :(得分:2)

在QNX6中您可以使用clock_gettime来获得最大粒度 系统允许的。

struct timespec start;
clock_gettime( CLOCK_REALTIME, &start);

答案 1 :(得分:0)

gettimeofday()系统调用将返回一个结构,其中包含当前Unix时间(以秒为单位)和属于当前秒数的微秒数。

获取总微秒数:

struct timeval tv;
gettimeofday(&tv, NULL);
u_int64_t now = tv.tv_sec * 1000000ULL + tv.tv_usec;