在C语言中,<time.h>
头文件是标准库中用来处理日期和时间的重要部分。本文将详细介绍<time.h>
头文件中包含的9个函数,并提供每个函数的完整示例代码。
简介
<time.h>
头文件定义了四个变量类型、两个宏和各种操作日期和时间的函数。在使用这些函数之前,我们首先来了解一下相关的库变量和宏。
库变量
<time.h>
头文件中定义的变量类型如下:
- size_t: 无符号整数类型,通常用于表示内存块的大小。它是
sizeof
关键字的结果。 - clock_t: 适合存储处理器时间的类型。
- time_t: 适合存储日历时间的类型。
- struct tm: 用来保存时间和日期的结构。
库宏
<time.h>
头文件中定义的宏如下:
- NULL: 表示空指针常量的值。
- CLOCKS_PER_SEC: 表示每秒的处理器时钟个数。
接下来,我们将逐个介绍这9个函数,并给出每个函数的示例代码。
库函数
1. char *asctime(const struct tm *timeptr)
返回一个指向字符串的指针,代表结构 timeptr
的日期和时间。
#include <stdio.h> #include <time.h> int main() { time_t rawtime; struct tm *timeinfo; time(&rawtime); timeinfo = localtime(&rawtime); printf("Current date and time: %s", asctime(timeinfo)); return 0; }
2. clock_t clock(void)
返回程序执行起,处理器时钟所使用的时间。
#include <stdio.h> #include <time.h> int main() { clock_t start, end; double cpu_time_used; start = clock(); // Your code here... end = clock(); cpu_time_used = ((double) (end - start)) / CLOCKS_PER_SEC; printf("CPU time used: %f seconds\n", cpu_time_used); return 0; }
3. char *ctime(const time_t *timer)
返回一个表示当地时间的字符串,当地时间是基于参数 timer
。
#include <stdio.h> #include <time.h> int main() { time_t rawtime; time(&rawtime); printf("Current local time: %s", ctime(&rawtime)); return 0; }
4. double difftime(time_t time1, time_t time2)
返回 time1
和 time2
之间相差的秒数 (time1-time2)
。
#include <stdio.h> #include <time.h> int main() { time_t start, end; double diff; time(&start); // Some operations... time(&end); diff = difftime(end, start); printf("Time taken: %.2f seconds\n", diff); return 0; }
5. struct tm *gmtime(const time_t *timer)
将 timer
的值分解为 tm
结构,并用协调世界时(UTC)表示。
#include <stdio.h> #include <time.h> int main() { time_t rawtime; struct tm *info; time(&rawtime); info = gmtime(&rawtime); printf("UTC time: %s", asctime(info)); return 0; }
6. struct tm *localtime(const time_t *timer)
将 timer
的值分解为 tm
结构,并用本地时区表示。
#include <stdio.h> #include <time.h> int main() { time_t rawtime; struct tm *info; time(&rawtime); info = localtime(&rawtime); printf("Local time: %s", asctime(info)); return 0; }
7. time_t mktime(struct tm *timeptr)
将指向 timeptr
结构的指针转换为一个依据本地时区的 time_t
值。
#include <stdio.h> #include <time.h> int main() { struct tm timeinfo = { .tm_year=121, .tm_mon=0, .tm_mday=1 }; time_t rawtime = mktime(&timeinfo); printf("Local time: %s", ctime(&rawtime)); return 0; }
8. size_t strftime(char *str, size_t maxsize, const char *format, const struct tm *timeptr)
根据 format
中定义的格式化规则,格式化结构 timeptr
表示的时间,并将它存储在 str
中。
#include <stdio.h> #include <time.h> int main() { time_t rawtime; struct tm *info; char buffer[80]; time(&rawtime); info = localtime(&rawtime); strftime(buffer, sizeof(buffer), "Date: %x\nTime: %X\n", info); printf("Formatted time: %s", buffer); return 0; }
#include <stdio.h> #include <time.h> int main() { // 获取当前时间 time_t rawtime; struct tm *info; char buffer[80]; time(&rawtime); info = localtime(&rawtime); // 格式化时间为"YYYY-MM-DD HH:MM:SS"格式 strftime(buffer, sizeof(buffer), "%Y-%m-%d %H:%M:%S", info); // 输出格式化后的时间 printf("Formatted time: %s\n", buffer); return 0; }
9. time_t time(time_t *timer)
计算当前日历时间,并将其编码为 time_t
格式。
#include <stdio.h> #include <time.h> int main() { time_t rawtime; time(&rawtime); printf("Current calendar time: %ld\n", rawtime); return 0; }
结论
通过本文,我们详细介绍了C语言标准库中<time.h>
头文件提供的9个函数,并提供了每个函数的完整示例代码。这些函数在处理日期和时间时非常有用,可以帮助开发人员轻松地进行时间相关操作和处理。