gpt4 book ai didi

c++ - C++11 中的优雅时间打印

转载 作者:可可西里 更新时间:2023-11-01 15:17:56 26 4
gpt4 key购买 nike

这就是我想在 C++11 中做的事情:给定两个时间点(例如计时类)作为 std::chrono::steady_clock::now(),优雅地打印他们的时差,例如:

1 day 4 hours 3 minutes 45 seconds

32 minutes 54 seconds 345 milliseconds

请注意,我对简单地使用 put_time 不感兴趣,因为我想从最重要的时间单位 开始打印。我知道,这是一个只打印差异的解决方案,但它并不漂亮:我正​​在寻找一个优雅解决方案:)

干杯!

最佳答案

Duration可以做算术。

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

int main(){
using namespace std::chrono;
using day_t = duration<long, std::ratio<3600 * 24>>;
auto start = system_clock::now();
std::this_thread::sleep_for(seconds(1));
auto end = system_clock::now();
auto dur = end - start;
auto d = duration_cast<day_t>(dur);
auto h = duration_cast<hours>(dur -= d);
auto m = duration_cast<minutes>(dur -= h);
auto s = duration_cast<seconds>(dur -= m);
auto ms = duration_cast<seconds>(dur -= s);
std::cout << d.count() << " days, "
<< h.count() << " hours, "
<< m.count() << " minutes, "
<< s.count() << " seconds, "
<< ms.count() << " milliseconds\n";

return 0;
}

输出:

enter image description here

可能重复:Extract year/month/day etc. from std::chrono::time_point in C++

关于c++ - C++11 中的优雅时间打印,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22063979/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com