Search code examples
c++c++11timerc++-chrono

How to get duration, as int milli's and float seconds from <chrono>?


I'm trying to use chrono library for timers and durations.

I want to be able to have a Duration frameStart; ( from app start ) and a Duration frameDelta; ( time between frames )

I need to be able to get the frameDelta duration as milliseconds and float seconds.

How do you do this with the new c++11 <chrono> libraries? I've been working on it and googling ( information is sparse ). The code is heavily templated and requires special casts and things, I can't figure out how to use this library correctly.


Solution

  • Is this what you're looking for?

    #include <chrono>
    #include <iostream>
    
    int main()
    {
        typedef std::chrono::high_resolution_clock Time;
        typedef std::chrono::milliseconds ms;
        typedef std::chrono::duration<float> fsec;
        auto t0 = Time::now();
        auto t1 = Time::now();
        fsec fs = t1 - t0;
        ms d = std::chrono::duration_cast<ms>(fs);
        std::cout << fs.count() << "s\n";
        std::cout << d.count() << "ms\n";
    }
    

    which for me prints out:

    6.5e-08s
    0ms