mktime函数详解

时间:2025-01-29 17:38:04

mktime 是一个 C 标准库中的函数,用于将结构体 struct tm 表示的时间转换为日历时间(即秒数)。

time_t mktime(struct tm *timeptr);

该函数接受一个指向 struct tm 结构体的指针,结构体包含了年、月、日、时、分、秒等时间信息。mktime 将这些时间信息转换为从 1970 年 1 月 1 日开始计算的秒数。

下面是一个简单的例子:

#include <>
#include <>

int main() {
    struct tm timeinfo = {0};

    // 设置时间信息
    timeinfo.tm_year = 2022 - 1900;  // 年份需要减去 1900
    timeinfo.tm_mon = 9 - 1;         // 月份从 0 开始,所以 9 表示十月
    timeinfo.tm_mday = 10;           // 日期
    timeinfo.tm_hour = 12;           // 小时
    timeinfo.tm_min = 30;            // 分钟
    timeinfo.tm_sec = 0;             // 秒

    // 调用 mktime 转换为时间戳
    time_t timestamp = mktime(&timeinfo);

    printf("Timestamp: %ld\n", timestamp);

    return 0;
}

在这个例子中,我们首先初始化了一个 struct tm 结构体 timeinfo,然后设置了其中的年、月、日、时、分、秒等时间信息。最后,使用 mktime 函数将结构体转换为时间戳,并打印结果。注意在设置年份时,需要将年份减去 1900,因为 struct tm 中的年份表示从 1900 年开始的年数。同样,月份从 0 开始计数。

相关问题:

  • Why is mktime() changing the year day of my tm struct?