C++ 参考手册
- C++11
- C++14
- C++17
- C++20
- C++ 编译器支持情况表
- 独立与宿主实现
- C++ 语言
- C++ 关键词
- 预处理器
- C++ 标准库头文件
- 具名要求
- 功能特性测试 (C++20)
- 工具库
- 类型支持(基本类型、RTTI、类型特性)
- 概念库 (C++20)
- 错误处理
- 动态内存管理
- 日期和时间工具
- std::chrono::clock_cast
- std::chrono::is_am, std::chrono::is_pm, std::chrono::make12, std::chrono::make24
- std::chrono::system_clock
- std::chrono::steady_clock
- std::chrono::high_resolution_clock
- std::chrono::clock_time_conversion
- std::chrono::duration
- std::chrono::time_point
- C 日期和时间工具
- std::chrono::is_clock
- std::chrono::utc_clock
- std::chrono::tai_clock
- std::chrono::gps_clock
- std::chrono::file_clock
- std::chrono::local_t
- std::chrono::day
- std::chrono::month
- std::chrono::year
- std::chrono::weekday
- std::chrono::operator/ (日历)
- std::chrono::year_month_day
- std::chrono::year_month_day_last
- std::chrono::year_month_weekday
- std::chrono::year_month_weekday_last
- std::chrono::weekday_indexed
- std::chrono::weekday_last
- std::chrono::month_day
- std::chrono::month_day_last
- std::chrono::month_weekday
- std::chrono::month_weekday_last
- std::chrono::year_month
- std::chrono::tzdb
- std::chrono::tzdb_list
- std::chrono::get_tzdb_list, std::chrono::get_tzdb, std::chrono::remote_version, std::chrono::reload_tzdb
- std::chrono::time_zone
- std::chrono::locate_zone
- std::chrono::current_zone
- std::chrono::zoned_time
- std::chrono::time_zone_link
- std::chrono::leap_second
- std::chrono::time_of_day
- std::chrono::last_spec
- std::chrono::treat_as_floating_point
- std::literals::chrono_literals::operator""ns
- std::literals::chrono_literals::operator""y
- std::literals::chrono_literals::operator""d
- std::literals::chrono_literals::operator""s
- std::literals::chrono_literals::operator""ms
- std::literals::chrono_literals::operator""us
- std::literals::chrono_literals::operator""h
- std::literals::chrono_literals::operator""min
- std::chrono::duration_values
- std::chrono::nonexistent_local_time
- std::chrono::ambiguous_local_time
- 注释
- 字符串库
- 容器库
- 迭代器库
- 范围库 (C++20)
- 算法库
- 数值库
- 输入/输出库
- 文件系统库
- 本地化库
- 正则表达式库
- 原子操作库
- 线程支持库
- 实验性 C++ 特性
- 有用的资源
- 索引
- std 符号索引
- 协程支持 (C++20)
- C++ 关键词
日期和时间工具
C++ 包含对二类时间操作的支持:
-
chrono
库,以各种精度跟踪时间的类型的灵活汇集(如 std::chrono::time_point )。 - C 风格日期和时间工具(如 std::time )。
std::chrono
库
chrono
库定义三种主要类型以及工具函数和常用 typedef 。
- 时钟
- 时长
- 时间点
时钟
时钟由起点(或纪元)及计次频率组成。例如,时钟可以拥有 1970 年 1 月 1 日的纪元,和每一秒的计次。 C++ 定义数种时钟类型:
定义于头文件
<chrono> | |
定义于命名空间
std::chrono | |
(C++11) |
来自系统范畴实时时钟的挂钟时间 (类) |
(C++11) |
决不会调整的单调时钟 (类) |
(C++11) |
拥有可用的最短嘀嗒周期的时钟 (类) |
(C++20) |
确定类型是否为时钟 (Clock) (类模板) (变量模板) |
(C++20) |
协调世界时 (UTC) 的时钟 (Clock) (类) |
(C++20) |
国际原子时 (TAI) 的时钟 (Clock) (类) |
(C++20) |
GPS 时间的时钟 (Clock) (类) |
(C++20) |
用于文件时间的时钟 (Clock) (typedef) |
(C++20) |
表示本地时间的伪时钟 (类) |
时间点
时间点是从特定时钟的纪元开始经过的时间时长。
定义于头文件
<chrono> | |
定义于命名空间
std::chrono | |
(C++11) |
时间中的点 (类模板) |
(C++20) |
定义如何转换一个时钟的时间点为另一个的特性类 (类模板) |
(C++20) |
转换一个时钟的时间点为另一个 (函数模板) |
时长
时长由时间跨度组成,定义为某时间单位的某个计次数。例如,“ 42 秒”可表示为由 42 个 1 秒时间点位的计次所组成的时长。
定义于头文件
<chrono> | |
定义于命名空间
std::chrono | |
(C++11) |
时间区间 (类模板) |
当天时刻
time_of_day
尽可能地将表示自午夜起经过的时长分割成时、分、秒和秒的小数部分。它主要是一个格式化工具。
定义于头文件
<chrono> | |
定义于命名空间
std::chrono | |
(C++20) |
表示一日中的时间 (类模板) |
日历
定义于头文件
<chrono> | |
定义于命名空间
std::chrono | |
(C++20) |
指示一个月中最后日期或星期的标签类 (类) |
(C++20) |
表示月之日期 (类) |
(C++20) |
表示年之月份 (类) |
(C++20) |
表示格里高利历中的年 (类) |
(C++20) |
表示格里高利历中星期之日 (类) |
(C++20) |
表示月份的第 n 个 weekday (类) |
(C++20) |
表示月份的最后一个 weekday (类) |
(C++20) |
表示特定 month 的特定 day (类) |
(C++20) |
表示特定 month 的最后一日 (类) |
(C++20) |
表示特定 month 的第 n 个 weekday (类) |
(C++20) |
表示特定 month 的最后一个 weekday (类) |
(C++20) |
表示特定 year 的特定 month (类) |
(C++20) |
表示特定的 year 、 month 和 day (类) |
(C++20) |
表示特定 year 和 month 的最后一日 (类) |
(C++20) |
表示特定 year 和 month 的第 n 个 weekday (类) |
(C++20) |
表示特定 year 和 month 的最后一个 weekday (类) |
(C++20) |
创建格里高利历日期的约定语法 (函数) |
时区
定义于头文件
<chrono> | |
定义于命名空间
std::chrono | |
(C++20) |
描述 IANA 时区数据库的副本 (类) |
(C++20) |
表示 tzdb 的链表 (类) |
访问和控制全球时区数据库信息 (函数) | |
(C++20) |
定位基于其名称的 time_zone (函数) |
(C++20) |
返回当前的 time_zone (函数) |
(C++20) |
表示时区 (类) |
(C++20) |
表示在特定时间点的关于时区的信息 (类) |
(C++20) |
表示关于从本地时间转换到 UNIX 时间的信息 (类) |
(C++20) |
选择应如何解析歧义的本地时间 (枚举) |
(C++20) |
zoned_time 所用的时区指针的特性类 (类模板) |
(C++20) |
表示时区和时间点 (类) |
(C++20) |
含有关于插入闰秒的信息 (类) |
(C++20) |
表示时区的替用名 (类) |
(C++20) |
抛出以报告本地时间不存在的异常 (类) |
(C++20) |
抛出以报告本地时间有歧义的异常 (类) |
chrono
I/O
定义于头文件
<chrono> | |
定义于命名空间
std::chrono | |
(C++20) |
从流分析 chrono 对象 (函数模板) |
C 风格日期与时间库
亦提供 C 风格日期与时间函数,例如 std::time_t 、 std::difftime 和 CLOCKS_PER_SEC 。
示例
此示例显式关于函数调用执行时间的信息:
运行此代码
#include <iostream> #include <chrono> long fibonacci(unsigned n) { if (n < 2) return n; return fibonacci(n-1) + fibonacci(n-2); } int main() { auto start = std::chrono::steady_clock::now(); std::cout << "f(42) = " << fibonacci(42) << '\n'; auto end = std::chrono::steady_clock::now(); std::cout << "finished computation at " << std::ctime(&end_time) << "elapsed time: " << elapsed_seconds.count() << "s\n"; }
可能的输出:
f(42) = 267914296 elapsed time: 1.88232s