ftime详解

发布时间:2023-05-21

一、ftime是什么?

ftime是一个C标准库函数,用于获取当前时间和日期。

#include <time.h>
time_t time(time_t *t);
struct tm *localtime(const time_t *t);

其中,time返回的是从1970年1月1日0时0分0秒至今的秒数,而localtime则将time返回的秒数转换为一个结构体,结构体中包含了年、月、日、时、分、秒等时间信息。

二、获取当前时间

要获取当前时间,我们只需要调用time函数即可:

#include <stdio.h>
#include <time.h>
int main(){
    time_t current_time;
    time(&current_time);
    printf("Current time is: %s\n", ctime(&current_time));
    return 0;
}

运行结果:

Current time is: Tue Apr 20 14:28:56 2021

三、格式化输出时间

ctime函数返回的时间格式并不是我们常见的日期时间格式,我们需要使用strftime函数将时间格式化为我们需要的格式。

#include <stdio.h>
#include <time.h>
int main(){
    time_t current_time;
    time(&current_time);
    char time_str[100];
    strftime(time_str, sizeof(time_str), "%Y-%m-%d %H:%M:%S", localtime(&current_time));
    printf("Current time is: %s\n", time_str);
    return 0;
}

运行结果:

Current time is: 2021-04-20 14:28:56

四、计算时间差

有时我们需要计算两个时间之间的差,可以通过将两个时间转为秒数,再相减得到时间差。

#include <stdio.h>
#include <time.h>
int main(){
    time_t start_time, end_time;
    double diff;
    time(&start_time);
    sleep(5);
    time(&end_time);
    diff = difftime(end_time, start_time);
    printf("Time difference is: %.2lf seconds\n", diff);
    return 0;
}

运行结果:

Time difference is: 5.00 seconds

五、设置定时器

我们可以使用定时器来定时执行某段代码,可以使用alarm函数。

#include <stdio.h>
#include <unistd.h>
#include <signal.h>
void alarm_handler(int signum){
    printf("Alarm triggered!\n");
    //重新设置定时器
    alarm(3);
}
int main(){
    //安装信号处理器
    signal(SIGALRM, alarm_handler);
    //设置定时器
    alarm(3);
    //等待定时器信号触发
    while(1){
        sleep(1);
    }
    return 0;
}

运行结果:

Alarm triggered!
Alarm triggered!
Alarm triggered!
...

六、总结

本文通过对ftime函数的介绍,详细阐述了如何获取当前时间和日期、格式化输出时间、计算时间差和设置定时器等。