C++时间

C++时间

头文件 chrono, 命名空间 std.

 

现在时间

  std::chrono::system_clock::now() 返回系统时钟的当前时间

 

时钟

  std::chrono::system_clock 代表系统当前的时间, 是不稳定的时钟, 并且提供了函数可将时间点转化为 time_t 类型的值
  std::chrono::steady_clock 表示一个稳定的时钟, 所谓稳定指调用 now()时, 其值总是大于上1次.

 

延迟

  std::this_thread::sleep_for() 和 std::this_thread::sleep_until()
  std::this_thread::sleep_for(std::chrono::milliseconds(100)); // 等待 100ms

 

取得当前时间

    #include <chrono>
    #include <sstream>
    #include <iomanip>
    std::string GetTimeStr()
    {
        std::chrono::system_clock::time_point now = std::chrono::system_clock::now();
        time_t tt = std::chrono::system_clock::to_time_t(now);
        struct tm ltm = {0};
        localtime_s(&ltm, &tt);
        std::stringstream stm;
        stm << std::setfill('0');
        stm << std::setw(4) << (ltm.tm_year + 1900) << "-";
        stm << std::setw(2) << (ltm.tm_mon + 1) << "-";
        stm << std::setw(2) << ltm.tm_mday << " ";
        stm << std::setw(2) << ltm.tm_hour << ":";
        stm << std::setw(2) << ltm.tm_min << ":";
        stm << std::setw(2) << ltm.tm_sec;

        return stm.str();
    }

 

计算程序代码执行的时间

    std::chrono::steady_clock::time_point tbegin = std::chrono::steady_clock::now();

    do_something();

    std::chrono::steady_clock::time_point tend = std::chrono::steady_clock::now();

    std::chrono::milliseconds used = std::chrono::duration_cast<std::chrono::milliseconds>(tend - tbegin);
    std::cout << "used time:" << used.count() << " ms" << std::endl;

 

posted @ 2016-10-07 23:37  阿Hai  阅读(445)  评论(0编辑  收藏  举报