cartographer_common_time
class Time 时间类型
作用:实现时间相关变量转换,本类中用到C++ 库chrono,参考小贴士
主要函数:
double ToSeconds(Duration duration); 把duration(不管什么单位)转换为second
Time FromUniversal(int64 ticks); 把计数器时间(如 781289445)转换为 Time值(如 3495.345s)。
int64 ToUniversal(Time time); 与FromUniversal 相反。
carto 代码引用说明:
**为信号提供时间戳变量,统计程序运行时间,频率计算等 **
小贴士
chrono是一个time library, 源于boost,现在已经是C++标准。类中主要用到std::chrono::duration和std::chrono::time_point 两个函数。参考:https://en.cppreference.com/w/cpp/chrono/
[std::chrono::duration]表示时间段,即持续时间的多
[std::chrono::time_poiny]表示时刻,即某个时间
chrono::duration:
#include <iostream>
#include <chrono>
constexpr auto year = 31556952ll; // seconds in average Gregorian yea
int main()
{
using shakes = std::chrono::duration<int, std::ratio<1, 1000>>;
// 把1s时间进行分隔为更小单位,表示duration的分辨率。此处为1s/1000 = 1m std::chrono::seconds sec(1);
std::cout << "1 second is:\n"
// integer scale conversion with no precision loss: no cas
std::cout << shakes(sec).count() << " shakes\n";
}
// 输出为
1 second is
1000 shakes.
几个预定:
typedef duration<long long, nano> nanoseconds; *// 纳秒*
typedef duration<long long, micro> microseconds; *// 微秒*
typedef duration<long long, milli> milliseconds; *// 毫秒*
typedef duration<long long> seconds; *// 秒*
typedef duration<int, ratio<60> > minutes; *// 分钟*
typedef duration<int, ratio<3600> > hours; *// 小时*
duration_cast():
函数duration_cast()
提供了在不同的时间单位之间进行转换的功能。
#include <iostream>
#include <chrono>
int main()
{
std::chrono::milliseconds ms = std::chrono::duration_cast<std::chrono::milliseconds>(std::chrono::minutes(3));
std::cout << "3 minutes equals to " << ms.count() << " milliseconds\n";
std::cin.get();
}
chrono::time_point:
#include <iostream>
#include <chrono>
int main()
{
std::chrono::milliseconds ms = std::chrono::duration_cast<std::chrono::milliseconds> (std::chrono::minutes(3));
std::cout << "3 minutes equals to " << ms.count() << " milliseconds\n";
std::cin.get();
}