1. struct tm 结构体概述
struct tm
是C语言中的一个结构体,定义在头文件 <time.h>
中。它用于存储时间和日期的信息,以便程序可以更方便地操作和处理时间。结构体的定义如下:
struct tm {
int tm_sec; // 秒,范围从 0 到 59
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 (周六)
int tm_yday; // 一年中的日,范围从 0 到 365
int tm_isdst; // 夏令时标识
};
2. 使用 struct tm 结构体
2.1 将时间戳转换为 struct tm
通过使用 localtime()
或 gmtime()
函数,可以将时间戳(秒数)转换为 struct tm
结构体,分别对应本地时区和格林尼治标准时间(GMT)。
#include <stdio.h>
#include <time.h>
int main() {
time_t currentTime;
struct tm *timeInfo;
time(¤tTime);
timeInfo = localtime(¤tTime); // 或 gmtime(¤tTime);
printf("Year: %d\n", timeInfo->tm_year + 1900);
printf("Month: %d\n", timeInfo->tm_mon + 1);
printf("Day: %d\n", timeInfo->tm_mday);
return 0;
}
2.2 格式化时间信息
可以使用 strftime()
函数将 struct tm
结构体中的时间信息格式化为自定义的字符串。
#include <stdio.h>
#include <time.h>
int main() {
time_t currentTime;
struct tm *timeInfo;
char buffer[80];
time(¤tTime);
timeInfo = localtime(¤tTime);
strftime(buffer, sizeof(buffer), "Formatted time: %Y-%m-%d %H:%M:%S", timeInfo);
printf("%s\n", buffer);
return 0;
}
3. 结论
struct tm
结构体是Linux系统编程中重要的数据结构,用于存储和操作时间和日期信息。本文详细介绍了 struct tm
的成员变量含义,以及如何使用相关函数将时间戳转换为结构体、格式化时间信息等。掌握 struct tm
结构体的使用,有助于开发者在程序中更有效地处理和展示时间信息,为日志记录、数据处理等提供支持。希望本文能够帮助读者深入理解并合理应用 struct tm
结构体。