C 标准库 - <time.h>详解

简介: `<time.h>` 是 C 标准库中的头文件,提供了与时间和日期相关的功能。它包括关键数据类型如 `time_t` 和 `struct tm`,常用宏如 `CLOCKS_PER_SEC`,以及函数如 `time()`、`difftime()`、`mktime()`、`localtime()`、`gmtime()`、`strftime()`、`asctime()`、`ctime()` 和 `clock()`。

<time.h> 是 C 标准库中的一个头文件,提供了一系列与时间和日期相关的功能。以下是对 <time.h> 中常用类型、宏和函数的详细介绍。

1. 重要数据类型

  • time_t: 用于表示时间的类型,通常是一个整数,表示从某个时间点(通常是1970年1月1日00:00:00 UTC)到当前时间的秒数。

  • struct tm: 用于表示分解后的时间信息,包含以下字段:

    • tm_sec:秒(0-60)
    • tm_min:分钟(0-59)
    • tm_hour:小时(0-23)
    • tm_mday:一个月中的天(1-31)
    • tm_mon:月份(0-11)
    • tm_year:自1900年以来的年份
    • tm_wday:一周中的天(0-6,0表示星期日)
    • tm_yday:一年中的天数(0-365)
    • tm_isdst:夏令时标志

2. 常用宏

  • CLOCKS_PER_SEC: 每秒的时钟计数,通常为 1000000(即每秒有 1,000,000 个时钟滴答)。

3. 常用函数

  • time(): 返回当前的时间(自1970年1月1日以来的秒数)。

    time_t time(time_t *tloc);
    
  • difftime(): 计算两个 time_t 值之间的差(以秒为单位)。

    double difftime(time_t end, time_t beginning);
    
  • mktime(): 将 struct tm 转换为 time_t

    time_t mktime(struct tm *timeptr);
    
  • localtime(): 将 time_t 转换为 struct tm,表示当地时间。

    struct tm *localtime(const time_t *timer);
    
  • gmtime(): 将 time_t 转换为 struct tm,表示 UTC 时间。

    struct tm *gmtime(const time_t *timer);
    
  • strftime(): 格式化时间,将 struct tm 转换为字符串。

    size_t strftime(char *s, size_t max, const char *format, const struct tm *tm);
    
  • asctime(): 将 struct tm 转换为字符串格式。

    char *asctime(const struct tm *tm);
    
  • ctime(): 将 time_t 转换为字符串格式。

    char *ctime(const time_t *timer);
    
  • clock(): 返回程序运行时间的时钟计数。

    clock_t clock(void);
    

4. 示例代码

以下是一个使用 <time.h> 的简单示例,展示如何获取当前时间并格式化输出:

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

int main() {
   
    time_t t;
    struct tm *tm_info;
    char buffer[26];

    // 获取当前时间
    time(&t);
    // 转换为当地时间
    tm_info = localtime(&t);

    // 格式化时间
    strftime(buffer, 26, "%Y-%m-%d %H:%M:%S", tm_info);
    printf("当前时间: %s\n", buffer);

    return 0;
}

5. 注意事项

  • 使用 localtime() 返回的 struct tm 是指向静态内存的指针,后续调用可能会覆盖其内容,建议使用 localtime_r()(线程安全)或在使用后立即复制内容。
  • strftime() 的格式化字符串可以使用多种格式符,例如 %Y 表示年份,%m 表示月份,%d 表示日期等。

通过以上内容,你可以对 <time.h> 有一个全面的理解,并能够在 C 程序中有效地处理时间和日期。

相关文章
|
5月前
|
存储 程序员
C 标准库 - <time.h>详解
`&lt;time.h&gt;` 是 C 标准库中用于处理时间和日期的头文件,提供了多种函数、宏和类型来获取和操作时间信息。重要数据类型包括 `time_t` 和 `struct tm`,前者表示从 1970 年 1 月 1 日以来的秒数,后者包含详细的日期和时间字段。
|
5月前
|
Python
python的时间操作time
【10月更文挑战第18天】 python的时间操作time
83 5
|
9月前
|
Go
int64转换time【golang】
int64转换time【golang】
128 1
|
5月前
|
Python
python的时间操作time-应用
【10月更文挑战第20天】 python模块time的函数使用。
72 7
|
5月前
|
Python
python的时间操作time-函数介绍
【10月更文挑战第19天】 python模块time的函数使用介绍和使用。
76 4
|
6月前
|
存储 C语言 开发者
C标准库-time.h
`&lt;time.h&gt;` 是 C 语言标准库中的头文件,提供了处理日期和时间的功能。它定义了 `time_t`, `tm` 等类型及多种函数,如 `time()` 获取当前时间戳,`localtime()` 和 `gmtime()` 将时间戳转换为本地时间和 UTC 时间,`strftime()` 格式化时间,`mktime()` 将 `tm` 结构转换为时间戳,`nanosleep()` 暂停程序执行等。这些功能帮助开发者高效地进行时间相关的编程工作。
|
6月前
|
Unix Go
Golang语言标准库time之日期和时间相关函数
这篇文章是关于Go语言日期和时间处理的文章,介绍了如何使用Go标准库中的time包来处理日期和时间。
131 3
|
9月前
|
存储 C语言
C语言标准库介绍:<time.h>
C语言标准库介绍:<time.h>
|
10月前
|
Linux Python Windows
Python中time和datetime模块详解
Python中time和datetime模块详解
|
10月前
|
数据处理 Python
使用Python的time库来格式化时间
使用Python的time库来格式化时间
324 1

热门文章

最新文章