时间相关库

c

time.h库

<time.h>是C标准库中的一个头文件,提供了处理日期和时间的函数和类型。提供了各种日期和时间操作的函数,例如获取当前时间、格式化时间、计算时间间隔。常用于需要进行时间计算和日期时间处理的程序。

time() 函数:返回从 1970 年 1 月 1 日 00:00:00 UTC 到当前的秒数。

    #include <stdio.h>
    #include <time.h>

    int main() {
        time_t t = time(NULL);
        printf("当前时间的秒数: %ld\n", t);
        return 0;
    }

localtime() 函数:将 time() 返回的时间值转换为本地时间的结构体 tm 。

    #include <stdio.h>
    #include <time.h>

    int main() {
        time_t t = time(NULL);
        struct tm *local = localtime(&t);
        printf("年: %d\n", local->tm_year + 1900);
        printf("月: %d\n", local->tm_mon + 1);
        printf("日: %d\n", local->tm_mday);
        return 0;
    }

C++

<ctime> 库

<ctime>:是C标准库中的一个头文件,在C++中被包含在<iostream>中,该头文件提供了将time_t格式的时间转换为字符串的函数ctime()。用于将time_t格式的时间转换为字符串格式,或进行简单的时间格式化输出。

ctime() 函数:将 time_t 类型的时间值转换为字符串形式。

    #include <iostream>
    #include <ctime>

    int main() {
        time_t t = time(NULL);
        std::cout << "当前时间: " << ctime(&t);
        return 0;
    }

<chrono> 库

<chrono>:是C++标准库的一部分,它是随着C++11标准引入的。引入<chrono>库的主要目的是为了提供更清晰、更准确和类型安全的时间处理方式。提供了对时间间隔的表示和操作,以及时钟的概念。常用于需要高精度时间测量、时间间隔计算或与时间相关的操作的程序。

#include <iostream>
#include <chrono>

int main() {
    // 获取当前系统时间
    auto now = std::chrono::system_clock::now();

    // 将时间转换为时间点
    std::time_t currentTime = std::chrono::system_clock::to_time_t(now);

    // 输出当前时间
    std::cout << "当前时间: " << std::ctime(&currentTime);

    return 0;
}
  1. 获取当前时间

#include <iostream>
#include <chrono>

int main() {
    // 获取当前系统时间点
    auto now = std::chrono::system_clock::now();
    std::cout << "当前时间: " << now.time_since_epoch().count() << std::endl;
    return 0;
}
  1. 计算时间间隔

#include <iostream>
#include <chrono>

int main() {
    auto start = std::chrono::steady_clock::now();

    // 模拟一些耗时操作
    for (int i = 0; i < 1000000; ++i) {}

    auto end = std::chrono::steady_clock::now();

    // 计算时间间隔
    std::chrono::duration<double> elapsed_seconds = end - start;
    std::cout << "耗时: " << elapsed_seconds.count() << " 秒" << std::endl;
    return 0;
}

  1. 时间单位转换

#include <iostream>
#include <chrono>

int main() {
    std::chrono::milliseconds ms(5000);  // 5000 毫秒

    // 转换为秒
    std::chrono::seconds s = std::chrono::duration_cast<std::chrono::seconds>(ms);
    std::cout << "转换为秒: " << s.count() << std::endl;

    // 转换为微秒
    std::chrono::microseconds us = std::chrono::duration_cast<std::chrono::microseconds>(ms);
    std::cout << "转换为微秒: " << us.count() << std::endl;
    return 0;
}

  1. 睡眠指定时间

#include <iostream>
#include <chrono>
#include <thread>

int main() {
    std::cout << "开始" << std::endl;

    // 睡眠 3 秒
    std::this_thread::sleep_for(std::chrono::seconds(3));

    std::cout << "3 秒后" << std::endl;
    return 0;
}

  1. 时钟类型

#include <iostream>
#include <chrono>

int main() {
    // 系统时钟
    auto now_system = std::chrono::system_clock::now();
    std::cout << "系统时钟: " << now_system.time_since_epoch().count() << std::endl;

    // 稳定时钟
    auto now_steady = std::chrono::steady_clock::now();
    std::cout << "稳定时钟: " << now_steady.time_since_epoch().count() << std::endl;

    // 高精度时钟(如果可用)
    auto now_high_resolution = std::chrono::high_resolution_clock::now();
    std::cout << "高精度时钟: " << now_high_resolution.time_since_epoch().count() << std::endl;
    return 0;
}
  1. 时间点的比较

#include <iostream>
#include <chrono>

int main() {
    auto time1 = std::chrono::system_clock::now();
    std::this_thread::sleep_for(std::chrono::seconds(2));
    auto time2 = std::chrono::system_clock::now();

    if (time1 < time2) {
        std::cout << "time1 早于 time2" << std::endl;
    } else if (time1 > time2) {
        std::cout << "time1 晚于 time2" << std::endl;
    } else {
        std::cout << "time1 等于 time2" << std::endl;
    }
    return 0;
}

这只是 <chrono> 库的一些常见用法,它还提供了更多高级和灵活的功能,以满足各种复杂的时间处理需求。

  • 8
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值