C 时间日期库
C 语言提供了 time.h
头文件来处理日期和时间。这个库包含了处理时间的函数和类型定义。
重要的时间类型
time_t
time_t
是一个用于存储时间的基本类型,通常是一个长整型,表示从 1970 年 1 月 1 日 00:00:00 UTC(称为 UNIX 纪元)开始经过的秒数。
struct tm
struct tm
是一个用于保存日期和时间信息的结构体,包含以下成员: c 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,0 表示一月) int tm_year; // 年 (从 1900 年开始的年数) int tm_wday; // 星期几 (0-6,0 表示星期日) int tm_yday; // 一年中的第几天 (0-365) int tm_isdst; // 夏令时标志 };
常用时间函数
获取当前时间
c
time_t time(time_t timer);
这个函数返回当前的系统时间。
时间转换函数
c
struct tm localtime(const time_t timer); // 将 time_t 转换为本地时间
struct tm gmtime(const time_t timer); // 将 time_t 转换为 UTC 时间
time_t mktime(struct tm timeptr); // 将 struct tm 转换为 time_t
格式化时间字符串
c
char ctime(const time_t timer); // 将 time_t 转换为字符串
char asctime(const struct tm timeptr); // 将 struct tm 转换为字符串
size_t strftime(char str, size_t maxsize, const char format, const struct tm timeptr); // 格式化时间字符串
使用示例
c
#include <stdio.h>
#include <time.h>
int main() {
// 获取当前时间
time_t now;
time(&now);
// 转换为本地时间
struct tm *local = localtime(&now);
// 使用 strftime 格式化输出
char str[80];
strftime(str, sizeof(str), "%Y-%m-%d %H:%M:%S", local);
printf("当前时间:%s\n", str);
// 使用 ctime 直接输出
printf("ctime 输出:%s", ctime(&now));
return 0;
}
时间计算
计算时间差
c
double difftime(time_t time2, time_t time1); // 返回两个时间之间的秒数差
时间操作示例
c
#include <stdio.h>
#include <time.h>
int main() {
time_t start, end;
time(&start);
// 执行一些操作
time(&end);
double diff = difftime(end, start);
printf("耗时:%f 秒\n", diff);
return 0;
}
注意事项
- 时区处理要特别注意,使用
localtime()
和gmtime()
时要明确需求