c++time
时间: 2025-04-28 09:20:08 浏览: 15
### C++ 中的时间函数及其用法
#### 获取当前时间戳
可以利用 `<chrono>` 库来获取高精度的时间点。`std::chrono::system_clock::now()` 函数返回自纪元以来的时间点对象。
```cpp
#include <iostream>
#include <chrono>
int main() {
auto now = std::chrono::system_clock::now();
}
```
对于更传统的应用,也可以采用 `<ctime>` 头文件中的 `time_t time(time_t *timer)` 来获得当前日历时间[^2]。
#### 将时间转换为可读格式
为了把时间戳转化为人类易读的形式,可以调用 `localtime_s` 或者 POSIX 下的 `localtime_r` 函数(线程安全版本),它们接受一个指向 `time_t` 类型指针并返回本地时间结构体 `tm*` 。
```cpp
struct tm *lt;
char buffer[80];
strftime(buffer, sizeof(buffer), "%Y-%m-%d %H:%M:%S", lt);
puts(buffer); // 输出类似 "2023-10-05 14:37:29"
```
需要注意的是,在多线程环境中应该优先考虑使用 `_r/_s` 后缀的安全变种以防止竞态条件发生。
#### 计算两个时间差值
当需要计算两段时间之间的差异时,推荐使用现代 C++ 提供的标准库特性——即基于模板类 `duration` 和 `steady_clock` 实现精确计时:
```cpp
auto start = std::chrono::steady_clock::now();
// 执行某些耗时操作...
auto end = std::chrono::steady_clock::now();
auto elapsed_ms = std::chrono::duration_cast<std::chrono::milliseconds>(end - start).count();
std::cout << "Elapsed Time: " << elapsed_ms << " ms\n";
```
上述代码片段展示了如何测量一段代码执行所需的时间,并将其结果打印出来。
#### 设置定时器或延时等待
如果想让程序暂停一段时间再继续运行,则可以直接调用 `this_thread::sleep_for` 方法实现休眠效果;而要创建周期性的事件触发机制则可能涉及到更高层次的设计模式如观察者模式等。
```cpp
using namespace std::literals::chrono_literals;
void wait_seconds(int seconds) {
std::this_thread::sleep_for(seconds s);
}
wait_seconds(5); // 程序将在此处停留五秒
```
阅读全文
相关推荐















