C ++:我如何获得unix时间?

时间:2010-06-13 06:32:51

标签: c++ unix time epoch

我需要一个函数或方法来在几秒钟内获得UNIX纪元,就像我在PHP中使用时间函数一样。

我找不到除ctime中time()之外的任何方法,它似乎只输出格式化日期,或者clock()函数有秒,但似乎总是100万的倍数,没有任何分辨率。

我希望测量程序中的执行时间,我只想计算开始和结束之间的差异; C ++程序员将如何做到这一点?

编辑:time()和difftime只允许以秒为单位的分辨率,而不是ms或任何btw。

3 个答案:

答案 0 :(得分:2)

time()应该可以正常工作,使用difftime进行时间差计算。如果您需要更好的解析,请使用gettimeofday

此外,重复:Calculating elapsed time in a C program in milliseconds

答案 1 :(得分:2)

如果您想了解get,我建议您使用getrusage。这将允许您跟踪CPU时间而不是挂钟时间:

struct rusage ru;
getrusage(RUSAGE_SELF, &ru);

ru.ru_utime.tv_sec;  // seconds of user CPU time
ru.ru_utime.tv_usec; // microseconds of user CPU time
ru.ru_stime.tv_sec;  // seconds of system CPU time
ru.ru_stime.tv_usec; // microseconds of system CPU time

答案 2 :(得分:0)

此代码应为您工作。

time_t epoch = time(0);


#include <iostream>
#include <ctime>
using namespace std;

int main() {
    time_t time = time(0);
    cout<<time<<endl;
    system("pause");
    return 0;
}

如有任何疑问,请在下面发表评论。