struct tm结构体解释
时间: 2025-07-01 22:56:39 浏览: 9
在C语言中,`struct tm` 是标准库 `<time.h>` 中定义的一个结构体类型,用于表示日历时间(broken-down time)。它将时间分解为年、月、日、时、分、秒等组成部分,便于程序对时间信息进行操作和格式化输出。
### `struct tm` 的成员变量及其含义
该结构体通常包含以下成员变量[^3]:
```c
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(0 表示一月)
int tm_year; // 自 1900 年起的年数(例如 123 表示 2023 年)
int tm_wday; // 星期几,范围 0-6(0 表示星期日)
int tm_yday; // 一年中的第几天,范围 0-365
int tm_isdst; // 夏令时标志(>0:启用夏令时;0:未启用;<0:未知)
};
```
### 使用场景与用途
`struct tm` 主要用于将原始时间值(如 `time_t` 类型)转换为可读性更强的时间信息,并支持进一步的时间格式化操作。常见的函数包括:
- `gmtime()`:将 `time_t` 转换为 UTC(协调世界时)对应的 `struct tm`。
- `localtime()`:将 `time_t` 转换为本地时间对应的 `struct tm`。
- `mktime()`:将 `struct tm` 转换回 `time_t` 类型。
- `asctime()` 和 `ctime()`:将 `struct tm` 或 `time_t` 转换为字符串形式的时间表示。
- `strftime()`:根据指定格式将 `struct tm` 格式化为字符串。
### 示例代码
以下是一个使用 `gmtime()` 获取并打印当前世界时间的例子:
```c
#include <stdio.h>
#include <time.h>
int main() {
time_t rawtime;
struct tm *info;
time(&rawtime); // 获取当前时间戳
info = gmtime(&rawtime); // 转换为 UTC 时间结构体
printf("UTC 时间: %d-%02d-%02d %02d:%02d:%02d\n",
info->tm_year + 1900, info->tm_mon + 1, info->tm_mday,
info->tm_hour, info->tm_min, info->tm_sec);
return 0;
}
```
此代码展示了如何通过 `struct tm` 成员访问具体的时间信息,并按照标准格式输出。
---
阅读全文
相关推荐


















