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;
}