如何在Mac OS X C ++程序中记录时间戳?

时间:2010-01-29 22:43:31

标签: c++ macos timestamp

我正在运行一个巨大的模拟/图形引擎。

有许多事件在飞过。

我想给它们加时间戳(自程序执行开始以毫秒为单位)。

我应该为此使用什么? [什么库?]

2 个答案:

答案 0 :(得分:3)

由于Mac OS X是基于Unix的,请尝试gettimeofday()。它将返回秒和微秒,直到系统时钟的分辨率。

#include <sys/types.h>    
int gettimeofday(struct timeval *tv, struct timezone *tz);

struct timeval {
    time_t      tv_sec;     /* seconds */
    suseconds_t tv_usec;    /* microseconds */
};

答案 1 :(得分:2)

gettimeofday()将主要工作正常,但它会受到异常,例如当用户更改系统日期/时间时。一个更好的方法是:

#include <CoreServices/CoreServices.h>

unsigned long long GetTimeSinceBootInMilliseconds()
{
   UnsignedWide uw = AbsoluteToNanoseconds(UpTime());
   return ((((unsigned long long)uw.hi)<<32)|(uw.lo))/1000000;
}

请注意,此函数返回的值将是毫秒 - 自启动,因此如果您需要毫秒 - 自 - 程序 - 启动,请在程序启动时调用此方法一次,存储该值,并从以后的结果中减去该值