以秒为单位获取当前时间

ant*_*009 10 c

我想知道是否有任何函数可以以秒为单位返回当前时间,仅为2位数秒?我正在使用gcc 4.4.2.

pax*_*blo 16

以下完整程序将向您展示如何访问秒值:

#include <stdio.h>
#include <time.h>

int main (int argc, char *argv[]) {
    time_t now;
    struct tm *tm;

    now = time(0);
    if ((tm = localtime (&now)) == NULL) {
        printf ("Error extracting time stuff\n");
        return 1;
    }

    printf ("%04d-%02d-%02d %02d:%02d:%02d\n",
        tm->tm_year+1900, tm->tm_mon+1, tm->tm_mday,
        tm->tm_hour, tm->tm_min, tm->tm_sec);

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

它输出:

2010-02-11 15:58:29
Run Code Online (Sandbox Code Playgroud)

它的工作原理如下.

  • 它要求time()获得当前时间的最佳近似值(通常是自纪元以来的秒数,但标准并未实际规定).
  • 然后它调用localtime()将其转换为包含各个日期和时间字段的结构等.
  • 在这一点上,您可以取消引用结构以获取您感兴趣的字段(tm_sec在您的情况下,但我已经展示了其中的一些).

请记住gmtime(),localtime()如果你想要格林威治时间,你也可以使用,或者那些太年轻的人不能记住UTC :-).

  • 我最近一直致力于标准 C 库的实现,并想添加一些细节。`time()` 不一定返回自纪元以来的秒数(但在大多数平台上都会返回)。`tm_sec` 的范围可以从 0 到 61(考虑闰秒)。 (2认同)