Get time since epoch in milliseconds, preferably using C++11 chrono

后端 未结 1 481
心在旅途
心在旅途 2020-12-08 00:23

All I want is to get the time since epoch in milliseconds and store it in an unsigned long.

I found this related question. But honestly, this can\'t be the easiest w

相关标签:
1条回答
  • 2020-12-08 00:59
    unsigned long milliseconds_since_epoch =
        std::chrono::system_clock::now().time_since_epoch() / 
        std::chrono::milliseconds(1);
    

    although, especially since you want platform independence, it might be better to replace unsigned long with a type that's more likely to be large enough:

    • (unsigned) long long
    • std::(u)int64_t
    • std::chrono::milliseconds::rep
    • auto

    To me, this clearly states both that you're risking loss of precision (by analogy with integer division) and that you're leaving the safety of the type system (by dividing by a typed time to give a unitless number). However, as demonstrated in the comments, some people would say that any attempt to move away from type-safety should be accompanied by a deliberate attempt to make the code look dangerous. If you need to deal with people who hold that belief, it might be simpler to use duration_cast rather than enter into an argument about irrelevant stylistic choices:

    unsigned long milliseconds_since_epoch = 
        std::chrono::duration_cast<std::chrono::milliseconds>
            (std::chrono::system_clock::now().time_since_epoch()).count();
    
    0 讨论(0)
提交回复
热议问题