<time.h> 是 C 标准库中的一个头文件,提供了处理和操作日期和时间的函数和类型。这个头文件中的函数用于获取当前时间、设置时间、格式化时间和计算时间差等。<time.h> 头文件定义了四个变量类型、两个宏和各种操作日期和时间的函数。
1. 时间类型
time_t: 用于表示日历时间(通常是自协调世界时(UTC)1970年1月1日00:00:00以来的秒数)。
struct tm: 用于表示分解的时间(年、月、日、小时、分钟、秒等)。
2. 获取当前时间
time_t time(time_t *tloc): 获取当前时间,并将其存储在 tloc 指向的 time_t 对象中。如果 tloc 为 NULL,则只返回当前时间。
3. 格式化时间
char *ctime(const time_t *timer): 将 time_t 类型的时间转换为字符串,并返回一个指向该字符串的指针。字符串的格式为:Www Mmm dd hh:mm:ss yyyy\n。
char *strftime(char *str, size_t maxsize, const char *format, const struct tm *timeptr): 根据 format 指定的格式,将 timeptr 指向的时间转换为字符串,并存储在 str 中。maxsize 指定了 str 的最大长度。
4. 分解时间
struct tm *localtime(const time_t *timer): 将 time_t 类型的时间转换为本地时间,并返回一个指向 struct tm 对象的指针。
struct tm *gmtime(const time_t *timer): 将 time_t 类型的时间转换为协调世界时(UTC),并返回一个指向 struct tm 对象的指针。
struct tm *mktime(struct tm *timeptr): 将 timeptr 指向的时间转换为 time_t 类型的时间(考虑夏令时),并更新 timeptr 的值。
5. 计算时间差
double difftime(time_t time1, time_t time0): 计算 time1 和 time0 之间的时间差(以秒为单位)。
6. 睡眠函数
unsigned int sleep(unsigned int seconds): 使程序暂停执行指定的秒数。
int usleep(useconds_t useconds): 使程序暂停执行指定的微秒数(百万分之一秒)。
示例:
#include <stdio.h>
#include <time.h>
int main() {
time_t rawtime;
struct tm * timeinfo;
// 获取当前时间
time(&rawtime);
// 将时间转换为本地时间
timeinfo = localtime(&rawtime);
// 打印当前时间
printf("当前时间: %s", asctime(timeinfo));
// 使用 strftime 格式化时间
char buffer[80];
strftime(buffer, sizeof(buffer), "%Y-%m-%d %H:%M:%S", timeinfo);
printf("格式化后的时间: %s\n", buffer);
// 计算时间差
time_t start = time(NULL);
sleep(2);
time_t end = time(NULL);
printf("时间差: %.2f 秒\n", difftime(end, start));
return 0;
}