📜  c get time - C 编程语言(1)

📅  最后修改于: 2023-12-03 15:13:46.035000             🧑  作者: Mango

C语言获取当前时间

本文将介绍C语言获取当前时间的方法。

一、time函数

在C语言中可以使用time函数获取当前时间戳,即从1970年1月1日0时0分0秒至当前时间所经过的秒数。其函数原型如下:

time_t time(time_t *t);

其中,参数t是一个指向time_t类型的指针,可以为空。如果t不为空,则会把当前时间戳赋值给t所指向的变量。如果t为空,则直接返回当前时间戳。

下面是一个完整的示例程序:

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

int main()
{
    time_t timestamp = time(NULL);
    printf("%ld\n", timestamp);
    return 0;
}

运行结果如下:

1607875881
二、ctime函数

在C语言中可以使用ctime函数将时间戳转换成可读性更好的字符串格式。其函数原型如下:

char *ctime(const time_t *timep);

其中,参数timep是一个指向time_t类型的指针,表示要转换的时间戳。

下面是一个完整的示例程序:

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

int main()
{
    time_t timestamp = time(NULL);
    char *timestr = ctime(&timestamp);
    printf("%s", timestr);
    return 0;
}

运行结果如下:

Sun Dec 13 08:11:21 2020
三、结构体tm

在C语言中也可以使用结构体tm存储和操作时间。该结构体的定义如下:

struct tm {
    int tm_sec;   // 秒 [0, 60]
    int tm_min;   // 分 [0, 59]
    int tm_hour;  // 时 [0, 23]
    int tm_mday;  // 日 [1, 31]
    int tm_mon;   // 月 [0, 11]
    int tm_year;  // 年 [1900, ]
    int tm_wday;  // 星期 [0, 6],0表示周日
    int tm_yday;  // 一年中的第几天 [0, 365]
    int tm_isdst; // 是否为夏令时 [0, 1],正常时间为0,夏令时为1
};

在C语言中可以通过调用如下函数获取当前的系统时间:

struct tm *localtime(const time_t *timep);

其中,timep表示需要转换的时间戳。该函数返回一个指向tm结构体的指针,即本地时间。

下面是一个完整示例程序:

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

int main()
{
    time_t timestamp = time(NULL);
    struct tm *tm_info = localtime(&timestamp);
    char buffer[26];
    strftime(buffer, 26, "%Y-%m-%d %H:%M:%S", tm_info);
    printf("%s\n", buffer);
    return 0;
}

运行结果如下:

2020-12-13 08:11:21
四、总结

本文介绍了C语言获取当前时间的三种方法,分别是time函数、ctime函数和结构体tm。如果需要操作时间,建议使用结构体tm来进行,因为其可以更方便地进行年月日时分秒的操作。