【C语言教程】【常用类库】(六)时间处理库 - <time.h>

6. 时间处理库 - <time.h>

C语言的 <time.h> 库提供了一组函数和类型用于处理时间与日期。这些功能通常用于记录事件或进行时间计算。

6.1. 时间获取与格式化
6.1.1. timeclock
  • time 函数

    • 作用:返回自Epoch(通常是1970年1月1日)以来的秒数。常用于获取当前时间。
    • 特点:返回的是time_t类型,可以转换为可读的本地时间格式。
    #include <stdio.h>
    #include <time.h>
    
    int main() {
        time_t current_time;
        current_time = time(NULL); // 获取当前时间
        printf("Current time: %ld\n", current_time);
        return 0;
    }
    
    • [1]time函数的使用time(NULL)用来获取当前的时间,以time_t类型返回表示时间的秒数。
  • clock 函数

    • 作用:用于计算程序执行所用的时间。返回自程序启动以来所用的处理器时间。
    • 特点:典型用于性能测试,通过获得处理器消耗的时间来测量代码执行效率。
    #include <stdio.h>
    #include <time.h>
    
    int main() {
        clock_t start, end;
        double cpu_time_used;
        
        start = clock();
        // 进行一些操作
        for (int i = 0; i < 1000000; i++);
        end = clock();
        
        cpu_time_used = ((double) (end - start)) / CLOCKS_PER_SEC;
        printf("CPU time used: %f seconds\n", cpu_time_used);
        return 0;
    }
    
    • [2]clock函数的使用:通过计算clock函数的返回值差值除以CLOCKS_PER_SEC,获得执行的CPU时间。
6.1.2. strftime 的使用
  • 作用:根据格式字符串规范,格式化时间并存储到字符串中。

  • 特点:能够将时间数据转换为具人类可读性的日期和时间格式,支持丰富的格式修饰符。

    #include <stdio.h>
    #include <time.h>
    
    int main() {
        time_t raw_time;
        struct tm *time_info;
        char buffer[80];
    
        time(&raw_time);
        time_info = localtime(&raw_time);
    
        strftime(buffer, 80, "Now it's %Y-%m-%d %H:%M:%S", time_info);
        printf("Formatted time: %s\n", buffer);
        
        return 0;
    }
    
    • [3]strftime函数的应用:通过strftime,可以将time_info中时间数据格式化为 “%Y-%m-%d %H:%M:%S” 并存储到缓冲区中。
6.2. 时间计算
6.2.1. difftime 的使用
  • 作用:计算两个时间点之间的时间差,以秒为单位。

  • 特点:方便地比较两个time_t类型的时间利于获取两个时刻的差。

    #include <stdio.h>
    #include <time.h>
    
    int main() {
        time_t start_time, end_time;
        double seconds;
    
        time(&start_time); // 起始时间
        // 假设这里有些延迟操作
        sleep(2);
        time(&end_time); // 结束时间
    
        seconds = difftime(end_time, start_time);
        printf("Elapsed time: %.2f seconds\n", seconds);
        return 0;
    }
    
    • [4]difftime函数的应用:通过将两个time_t时间点的差值计算出来,获得期间的秒数。
6.2.2. 定时与延时函数:sleep, usleep
  • sleep 函数

    • 作用:使程序暂停执行指定秒数。
    • 特点:非精确定时(有可能被中断),常用于简单的延时。
    #include <unistd.h> // Linux 上使用
    
    int main() {
        printf("Wait for 3 seconds...\n");
        sleep(3);
        printf("Done waiting!\n");
        return 0;
    }
    
  • usleep 函数

    • 作用:使程序暂停执行指定的微秒数。
    • 特点:提供更为精确的延时控制(微秒级)。
    #include <unistd.h> // Unix/Linux 系统
    
    int main() {
        printf("Wait for 500 milliseconds...\n");
        usleep(500000); // 500,000 微秒 = 500 毫秒
        printf("Done waiting!\n");
        return 0;
    }
    
  • [5]sleep和usleep的应用:通过这些函数实现程序的暂停和延时操作,通常用在需要控制时间的场合中。

上一篇:sping-第五章 Bean的作用域-1.单例和多例


下一篇:跨境电商不同节点的物流配送实现