// // Created by wk on 2020/9/25. // #ifndef PKGNAME_TIME_TOOL_H #define PKGNAME_TIME_TOOL_H #include #include #include #include #include #include "tool/singleton.hpp" class Time_tool:public Singleton { // 子类必须把父类设定为友元函数,这样父类才能使用子类的私有构造函数。 friend class Singleton; struct time_data { std::chrono::system_clock::time_point t_time_start;//计时开始 std::chrono::system_clock::time_point t_time_end;//计时结束 std::chrono::system_clock::duration t_time_difference;//时差 }; private: // 父类的构造函数必须保护,子类的构造函数必须私有。 Time_tool(); public: //必须关闭拷贝构造和赋值构造,只能通过 get_instance 函数来进行操作唯一的实例。 Time_tool(const Time_tool& other) = delete; Time_tool& operator =(const Time_tool& other) = delete; ~Time_tool(); public://API functions void Time_tool_uninit(); //获取当前系统时间点 std::chrono::system_clock::time_point get_system_point(); //设置输出格式 保留小数点后几位 不设置默认为系统输出 void set_points_digits(int); //获取当前时间 精确到秒 std::string get_current_time_seconds(); //获取当前时间 精确到毫秒 std::string get_current_time_millisecond(); //获取当前时间 精确到微妙 std::string get_current_time_microsecond(); //获取当前时间结构体 tm get_current_time_struct(); //计时开始 void time_start(int key=1); //指定计时器计时结束 void time_end(int key=1); //打印计时时差 精确到秒 void cout_time_seconds(int key=1); //打印计时时差 精确到毫秒 void cout_time_millisecond(int key=1); //打印计时时差 精确到微秒 void cout_time_microsecond(int key=1); //打印计时时差 精确到纳秒 void cout_time_nanosecond(int key=1); //清除计时器 void clear_timer(); public://get or set member variable protected://member variable private: std::map timetool_map; }; #endif //PKGNAME_TIME_TOOL_H