在Linux环境下,使用C语言打印时间有多种方法,以下是几种常见的实现方式及其详细说明:
方法一:使用time.h
库函数打印当前时间
1、头文件:#include <stdio.h>
和#include <time.h>
2、函数原型:time_t time(time_t *tloc); struct tm *localtime_r(const time_t *timep, struct tm *result);
3、示例代码:
```c
#include <stdio.h>
#include <time.h>
int main() {
struct tm tloc;
time_t t = time(NULL);
localtime_r(&t, &tloc);
printf("%04d-%02d-%02d %02d:%02d:%02d
",
tloc.tm_year + 1900,
tloc.tm_mon + 1,
tloc.tm_mday,
tloc.tm_hour,
tloc.tm_min,
tloc.tm_sec);
return 0;
}
```
4、运行效果:该程序会输出当前的日期和时间,例如2021-10-07 15:32:09
。
方法二:使用sys/time.h
库函数打印精确时间
1、头文件:#include <stdio.h>
、#include <sys/time.h>
和#include <unistd.h>
2、函数原型:struct timeval gettimeofday(struct timeval *tv, struct timezone *tz); double get_us();
3、示例代码:
```c
#include <stdio.h>
#include <sys/time.h>
#include <unistd.h>
double __get_us(struct timeval t) {
return (t.tv_sec * 1000000 + t.tv_usec) / 1000.0;
}
int main() {
struct timeval start_time, stop_time;
gettimeofday(&start_time, NULL);
// 待运行代码段
gettimeofday(&stop_time, NULL);
printf("Time use %f ms
", (__get_us(stop_time) __get_us(start_time)) / 1000);
sleep(1); // 睡眠1秒,以便更明显地看到时间差
return 0;
}
```
4、运行效果:该程序会输出代码段的执行时间,例如Time use 1000.99400 ms
。
方法三:使用gettimeofday
函数打印毫秒级时间戳
1、头文件:#include <stdio.h>
、#include <sys/time.h>
和#include <unistd.h>
2、函数原型:gettimeofday(struct timeval *tv, struct timezone *tz); struct timeval { long tv_sec; /* seconds */ long tv_usec; /* microseconds */ };
3、示例代码:
```c
#include <stdio.h>
#include <sys/time.h>
#include <unistd.h>
void printtimestamp() {
struct timeval tv;
gettimeofday(&tv, NULL);
int milli = tv.tv_usec / 1000;
char buffer [80];
localtime_r(&tv.tv_sec, &t);
strftime(buffer, 80, "%Y-%m-%d %H:%M:%S:%03d", &t, &milli);
printf("%s
", buffer);
}
int main() {
while (1) {
printtimestamp();
sleep(1);
}
return 0;
}
```
4、运行效果:该程序每秒打印一次当前时间,格式为YYYY-MM-DD HH:MM:SS:MMM
。
通过上述几种方法,可以在不同的精度和格式要求下,实现在Linux环境中使用C语言打印时间的功能。
本文来源于互联网,如若侵权,请联系管理员删除,本文链接:https://www.9969.net/60192.html