我当前的模式(对于 unix)是调用gettimeofday
,将tv_sec
字段转换为 a time_t
,将其传递给localtime
,然后将结果与tv_usec
. 这给了我一个完整的日期(年、月、日、小时、分钟、秒、纳秒)。
我正在尝试将我的代码更新为 C++11,以实现可移植性和一般的良好实践。我能够做到以下几点:
auto currentTime = std::chrono::system_clock::now( );
const time_t time = std::chrono::system_clock::to_time_t( currentTime );
const tm *values = localtime( &time );
// read values->tm_year, etc.
但我被困在毫秒/纳秒上。一方面,to_time_t
声称舍入是实现定义的(!)所以我不知道 22.6 秒的最终读数是否实际上应该是 21.6,另一方面我不知道如何获得自前一秒以来的毫秒数(标准保证秒数是正常的吗?即我可以得到自纪元以来的总毫秒数并对其取模吗?即使可以,但感觉很难看)。
std::chrono::system_clock
我应该如何以毫秒为单位获取当前日期?