当前位置:   article > 正文

C语言标准库介绍:<time.h>

C语言标准库介绍:<time.h>

在C语言中,<time.h>头文件是标准库中用来处理日期和时间的重要部分。本文将详细介绍<time.h>头文件中包含的9个函数,并提供每个函数的完整示例代码

简介

<time.h>头文件定义了四个变量类型、两个宏和各种操作日期和时间的函数。在使用这些函数之前,我们首先来了解一下相关的库变量和宏。

库变量

<time.h>头文件中定义的变量类型如下:

  1. size_t: 无符号整数类型,通常用于表示内存块的大小。它是 sizeof 关键字的结果。
  2. clock_t: 适合存储处理器时间的类型。
  3. time_t: 适合存储日历时间的类型。
  4. struct tm: 用来保存时间和日期的结构。

库宏

<time.h>头文件中定义的宏如下:

  1. NULL: 表示空指针常量的值。
  2. CLOCKS_PER_SEC: 表示每秒的处理器时钟个数。

接下来,我们将逐个介绍这9个函数,并给出每个函数的示例代码。

库函数

1. char *asctime(const struct tm *timeptr)

返回一个指向字符串的指针,代表结构 timeptr 的日期和时间。

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

int main() {
    time_t rawtime;
    struct tm *timeinfo;

    time(&rawtime);
    timeinfo = localtime(&rawtime);

    printf("Current date and time: %s", asctime(timeinfo));

    return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

2. clock_t clock(void)

返回程序执行起,处理器时钟所使用的时间。

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

int main() {
    clock_t start, end;
    double cpu_time_used;

    start = clock();
    // Your code here...
    end = clock();

    cpu_time_used = ((double) (end - start)) / CLOCKS_PER_SEC;
    printf("CPU time used: %f seconds\n", cpu_time_used);

    return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

3. char *ctime(const time_t *timer)

返回一个表示当地时间的字符串,当地时间是基于参数 timer

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

int main() {
    time_t rawtime;
    time(&rawtime);

    printf("Current local time: %s", ctime(&rawtime));

    return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

4. double difftime(time_t time1, time_t time2)

返回 time1time2 之间相差的秒数 (time1-time2)

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

int main() {
    time_t start, end;
    double diff;

    time(&start);
    // Some operations...
    time(&end);

    diff = difftime(end, start);
    printf("Time taken: %.2f seconds\n", diff);

    return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

5. struct tm *gmtime(const time_t *timer)

timer 的值分解为 tm 结构,并用协调世界时(UTC)表示。

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

int main() {
    time_t rawtime;
    struct tm *info;

    time(&rawtime);
    info = gmtime(&rawtime);

    printf("UTC time: %s", asctime(info));

    return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

6. struct tm *localtime(const time_t *timer)

timer 的值分解为 tm 结构,并用本地时区表示。

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

int main() {
    time_t rawtime;
    struct tm *info;

    time(&rawtime);
    info = localtime(&rawtime);

    printf("Local time: %s", asctime(info));

    return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

7. time_t mktime(struct tm *timeptr)

将指向 timeptr 结构的指针转换为一个依据本地时区的 time_t 值。

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

int main() {
    struct tm timeinfo = { .tm_year=121, .tm_mon=0, .tm_mday=1 };
    time_t rawtime = mktime(&timeinfo);

    printf("Local time: %s", ctime(&rawtime));

    return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

8. size_t strftime(char *str, size_t maxsize, const char *format, const struct tm *timeptr)

根据 format 中定义的格式化规则,格式化结构 timeptr 表示的时间,并将它存储在 str 中。

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

int main() {
    time_t rawtime;
    struct tm *info;
    char buffer[80];

    time(&rawtime);
    info = localtime(&rawtime);

    strftime(buffer, sizeof(buffer), "Date: %x\nTime: %X\n", info);
    printf("Formatted time: %s", buffer);

    return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
#include <stdio.h>
#include <time.h>

int main() {
    // 获取当前时间
    time_t rawtime;
    struct tm *info;
    char buffer[80];

    time(&rawtime);
    info = localtime(&rawtime);

    // 格式化时间为"YYYY-MM-DD HH:MM:SS"格式
    strftime(buffer, sizeof(buffer), "%Y-%m-%d %H:%M:%S", info);

    // 输出格式化后的时间
    printf("Formatted time: %s\n", buffer);

    return 0;
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21

9. time_t time(time_t *timer)

计算当前日历时间,并将其编码为 time_t 格式。

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

int main() {
    time_t rawtime;

    time(&rawtime);
    printf("Current calendar time: %ld\n", rawtime);

    return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

结论

通过本文,我们详细介绍了C语言标准库中<time.h>头文件提供的9个函数,并提供了每个函数的完整示例代码。这些函数在处理日期和时间时非常有用,可以帮助开发人员轻松地进行时间相关操作和处理。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/145807
推荐阅读
相关标签
  

闽ICP备14008679号