1、time_t 的定义
time_t
是一个由 typedef
定义的类型,通常在 time.h
头文件中定义。
typedef long time_t;
或者
typedef unsigned long time_t;
但在不同的系统上,time_t
的底层实现可能有所不同。可以使用 sizeof(time_t)
来检查 time_t
在当前系统中的大小。
#include <stdio.h> #include <time.h> int main() { printf("Size of time_t: %zu bytes\n", sizeof(time_t)); return 0; }
2、time_t 存储时间
time_t
一般表示从 Unix 纪元(Epoch,1970年1月1日 00:00:00 UTC)到当前时间的秒数。使用time_t
获取当前时间。
#include <stdio.h> #include <time.h> int main() { time_t current_time; time(¤t_time); // 获取当前时间(从 1970-01-01 00:00:00 到现在的秒数) printf("Current time (time_t): %ld\n", (long)current_time); return 0; }
3、time_t 的转换
time_t
主要用于计算和格式化时间。
1)转换为本地时间 struct tm
#include <stdio.h> #include <time.h> int main() { time_t now = time(NULL); struct tm *local = localtime(&now); // 转换为本地时间 printf("Local time: %s", asctime(local)); return 0; }
2)转换为 GMT/UTC 时间
#include <stdio.h> #include <time.h> int main() { time_t now; struct tm *utc_time; // 获取当前时间 time(&now); // 将时间转换为 UTC 时间 utc_time = gmtime(&now); // 打印 UTC 时间 printf("UTC time: %s", asctime(utc_time)); return 0; }
3) 计算时间差
#include <stdio.h> #include <time.h> int main() { time_t start = time(NULL); sleep(5); // 休眠 5 秒 time_t end = time(NULL); double diff = difftime(end, start); printf("Elapsed time: %.2f seconds\n", diff); return 0; }