linux C++获取时间戳
获取开机后运行时间点
不会因系统对时等操作而影响,只计算开机后运行的时间,相当于内核时间,稳定的时间点,可以用作时间间隔的判断
// 获取当前运行时间点,秒s
uint32_t GetCurTickSec()
{
auto tp = std::chrono::steady_clock::now();
time_t cur_time = std::chrono::duration_cast<std::chrono::seconds>(tp.time_since_epoch()).count();
return cur_time;
}
// 获取当前运行时间点,毫秒ms
uint64_t GetCurTickMs()
{
auto tp = std::chrono::steady_clock::now();
uint64_t runningTime = std::chrono::duration_cast<std::chrono::milliseconds>(tp.time_since_epoch()).count();
return runningTime;
}
// 获取当前运行时间点,微秒us
uint64_t GetCurTickUs()
{
auto tp = std::chrono::steady_clock::now();
auto cur_time = std::chrono::duration_cast<std::chrono::microseconds>(tp.time_since_epoch()).count();
return cur_time;
}
获取系统时间
获取的是系统的时间,会因为对时或者修改系统时间而改变,所以不能用作时间间隔判断;
1970-1-1 00:00:00
//获取当前系统时间点,秒s,1970-1-1 00:00:00
uint64_t GetSysTickSec()
{
auto now = std::chrono::system_clock::now();
auto sec = std::chrono::duration_cast<std::chrono::seconds>(now.time_since_epoch()).count();
return sec;
}
//获取当前系统时间点,毫秒ms,1970-1-1 00:00:00
uint64_t GetSysTickMs()
{
auto now = std::chrono::system_clock::now();
auto milli = std::chrono::duration_cast<std::chrono::milliseconds>(now.time_since_epoch()).count();
return milli;
}
//获取当前系统时间点,微秒us,1970-1-1 00:00:00
uint64_t GetSysTickUs()
{
auto now = std::chrono::system_clock::now();
auto micro = std::chrono::duration_cast<std::chrono::microseconds>(now.time_since_epoch()).count();
return micro;
}