获取计算机时间 c++

20 浏览
0 Comments

获取计算机时间 c++

我使用C++。我想获取计算机时间(我知道如何使用ctime函数)。我想像获取int变量一样获取时间(秒、分钟等)。有什么帮助吗?

类似于:

int sec = 获取秒();

int min = 获取分钟();

我不想要一个time_t变量。

0
0 Comments

C++11引入了库,可以用来获取计算机时间。如果系统支持,还可以使用time(2)、localtime(3)、strftime(3)、clock(3)、clock_gettime(2)等函数。下面的代码可以用来获取当前时间并转换为字符串:

time_t now=0;
time(&now);
char nowbuf[64];
strftime(nowbuf, sizeof(nowbuf), "%c", localtime(now));

如果只想获取时间的小时和分钟,可以使用下面的代码:

struct tm* lt = localtime(now);
int hours = lt->tm_hour;
int minutes = lt->tm_min;

当然,理论上应该对time、localtime等函数的调用结果进行错误检查,但是我从未遇到过这些函数调用失败的情况。这些细节通常与操作系统相关。如果在Linux上,可以参考time(7)的文档;一些框架库,如POCO或Qt,可能提供了一种通用的(与操作系统无关的)抽象。

另外,你可能关心时区,可能需要使用gmtime而不是localtime。

代码示例:

int sec = get.sec();
int min = get.min();

上述代码中,get必须是一个struct。

以下是一个完整的示例代码,用于获取自2000年1月1日以来的秒数:

int main() {
    time_t timer;
    struct tm y2k;
    double seconds;
    y2k.tm_hour = 0;
    y2k.tm_min = 0;
    y2k.tm_year = 100;
    y2k.tm_mon = 0;
    y2k.tm_mday = 1;
    time(&timer);  // 获取当前时间,等同于:timer = time(NULL)
    seconds = difftime(timer,mktime(&y2k));
    printf ("%.f seconds since January 1, 2000 in the current timezone", seconds);
    return 0;
}

以上就是在C++中获取计算机时间的方法和相关代码。

0