C++ 日期 & 时间

C++ 日期 & 时间

C++ 是一种广泛使用的编程语言,它提供了强大的功能来处理日期和时间。在 C++ 中,日期和时间的处理主要依赖于 <chrono><ctime> 头文件。这两个头文件提供了不同的类和函数,用于执行各种日期和时间相关的操作,例如获取当前时间、计算时间差、格式化日期等。

1. 使用 <chrono> 头文件

<chrono> 头文件是 C++11 中引入的,它提供了高精度的时间测量和处理功能。这个头文件定义了三种主要类型:durationtime_pointclocks

1.1. duration

duration 是一个模板类,用于表示时间间隔。它有一个模板参数,表示时间单位。例如,std::chrono::seconds 表示秒,std::chrono::milliseconds 表示毫秒。

#include <iostream>
#include <chrono>

int main() {
    std::chrono::seconds duration(10);
    std::cout << "Duration: " << duration.count() << " seconds" << std::endl;
    return 0;
}

1.2. time_point

time_point 是一个模板类,用于表示时间点。它有一个模板参数,表示时间单位。例如,std::chrono::system_clock::time_point 表示系统时钟的时间点。

#include <iostream>
#include <chrono>
#include <ctime>

int main() {
    std::chrono::system_clock::time_point now = std::chrono::system_clock::now();
    std::time_t now_c = std::chrono::system_clock::to_time_t(now - std::chrono::hours(24));
    std::cout << "Yesterday's date: " << std::ctime(&now_c) << std::endl;
    return 0;
}

1.3. clocks

C++11 提供了三种时钟:system_clocksteady_clockhigh_resolution_clock

  • system_clock:表示系统时钟,可以用来获取当前时间。
  • steady_clock:表示稳定时钟,它保证每次调用 now() 返回的值是递增的。
  • high_resolution_clock:表示高分辨率时钟,它提供最小的时间单位。
#include <iostream>
#include <chrono>

int main() {
    std::chrono::high_resolution_clock::time_point t1 = std::chrono::high_resolution_clock::now();
    // ... do some work ...
    std::chrono::high_resolution_clock::time_point t2 = std::chrono::high_resolution_clock::now();

    std::chrono::duration<double> duration = t2 - t1;
    std::cout << "Elapsed time: " << duration.count() << " seconds" << std::endl;
    return 0;
}

2. 使用 <ctime> 头文件

<ctime> 头文件是 C++ 早期版本中用于处理日期和时间的。它提供了一些结构体和函数,例如 time_ttmasctime

2.1. time_t

time_t 是一个用于表示时间的算术类型。它通常以自 Unix 纪元(1970 年 1 月 1 日)以来的秒数来表示时间。

#include <iostream>
#include <ctime>

int main() {
    time_t now = time(0);
    std::cout << "Current time: " << now << std::endl;
    return 0;
}

2.2. tm

tm 结构体用于存储日期和时间信息。它包含年、月、日、小时、分钟、秒等信息。

#include <iostream>
#include <ctime>

int main() {
    time_t now = time(0);
    tm *ltm = localtime(&now);

    std::cout << "Year: " << 1900 + ltm->tm_year << std::endl;
    std::cout << "Month: " << 1 + ltm->tm_mon << std::endl;
    std::cout << "Day: " << ltm->tm_mday << std::endl;
    return 0;
}

2.3. asctime

asctime 函数用于将 tm 结构体转换为字符串表示的日期和时间。

#include <iostream>
#include <ctime>

int main() {
    time_t now = time(0);
    std::cout << "Current time: " << asctime(localtime(&now)) << std::endl;
    return 0;
}

总结

C++ 提供了多种方式来处理日期和时间,包括使用 <chrono><ctime> 头文件。<chrono>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值