c++11 时间戳

来源:互联网 发布:福彩3d矩阵图 编辑:程序博客网 时间:2024/05/16 18:25

chrono库包含3种类型:时间间隔duration、时间点time point和时钟clocks 

1、时间段:duration、duration_cast

        原型:template<class Rep, class Period = std::ratio<1, 1>> class duration;     //std::ratio<p1, p2>是一个分数, p1为分子, p2为分母, 默认为1, 1;
        例:在chrono命名空间下, 时、分、秒、毫秒、微妙、纳秒的定义
            typedef duration<long long, nano> nanoseconds;      //typedef ratio<1, 1000000000> nano;
            typedef duration<long long, micro> microseconds;    //typedef ratio<1, 1000000> micro;
            typedef duration<long long, milli> milliseconds;    //typedef ratio<1, 1000> milli;
            typedef duration<long long> seconds;
            typedef duration<int, ratio<60> > minutes;
            typedef duration<int, ratio<3600> > hours;
        用法:std::this_thread::sleep_for(std::chrono::milliseconds(500)); 当前线程休息500毫秒   
        获取时钟周期数:count()
            hours h(3);
            h.count();
    2、时间点:time point
        ①time_since_epoch()  获得1970年1月1日到time_point()时间经过的duration
        用法:获取子1970以来的天数
        typedef std::chrono::duration<int, std::ratio<3600 * 24>> day_types;
        std::chrono::time_point<system_clock, day_types> today = std::chrono::system_clock:now();   //获取当前时间, day_types为自定义类型天, 也可以为系统类型seconds等,也可以省略;
        std::cout<<today.time_since_epoch().cout();     //打印自1970年到today的天数
        ②格式化输出时间点(vs2013以上版本才支持)
        std::chrono::system_clock::time_point now = std::chrono::system_clock::now();
        std::time_t last = system_clock::to_time_t(now - hours(24));        //将一个time_point转化为ctime, 与之对应的函数from_time_t将ctime转化为time_point
        std::put_time(std::localtime(&last), "%F %T")<<'\n';        -->2015-10-20 16:04:11      //格式化输出, 此函数必须vs2013以上版本才支持, 其它格式"%Y-%m-%d %H:%M:%S";
    3、时钟clocks
        ①system_clock:  系统时间
        ②steady_clock:  不能被调整的时钟, 保证先后调用now()得到的时间值是不会递减的;
        ③high_resolution_clock: 高精度时钟
        例:std::chrono::system_clock::time_point t1 = std::chrono::system_clock:now();       //获取当前时间点
            std::chrono::system_clock::time_point t2 = std::chrono::system_clock::now();
            std::cout<<std::chrono::duration_cast<std::chrono::milliseconds>(t2 - t1).count()<<'\n';    //打印时间差
0 0
原创粉丝点击