time_tool.h 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. //
  2. // Created by wk on 2020/9/25.
  3. //
  4. #ifndef PKGNAME_TIME_TOOL_H
  5. #define PKGNAME_TIME_TOOL_H
  6. #include <thread>
  7. #include <map>
  8. #include <iostream>
  9. #include<time.h>
  10. #include <queue>
  11. #include "tool/singleton.hpp"
  12. class Time_tool:public Singleton<Time_tool>
  13. {
  14. // 子类必须把父类设定为友元函数,这样父类才能使用子类的私有构造函数。
  15. friend class Singleton<Time_tool>;
  16. struct time_data
  17. {
  18. std::chrono::system_clock::time_point t_time_start;//计时开始
  19. std::chrono::system_clock::time_point t_time_end;//计时结束
  20. std::chrono::system_clock::duration t_time_difference;//时差
  21. };
  22. private:
  23. // 父类的构造函数必须保护,子类的构造函数必须私有。
  24. Time_tool();
  25. public:
  26. //必须关闭拷贝构造和赋值构造,只能通过 get_instance 函数来进行操作唯一的实例。
  27. Time_tool(const Time_tool& other) = delete;
  28. Time_tool& operator =(const Time_tool& other) = delete;
  29. ~Time_tool();
  30. public://API functions
  31. void Time_tool_uninit();
  32. //获取当前系统时间点
  33. std::chrono::system_clock::time_point get_system_point();
  34. //设置输出格式 保留小数点后几位 不设置默认为系统输出
  35. void set_points_digits(int);
  36. //获取当前时间 精确到秒
  37. std::string get_current_time_seconds();
  38. //获取当前时间 精确到毫秒
  39. std::string get_current_time_millisecond();
  40. //获取当前时间 精确到微妙
  41. std::string get_current_time_microsecond();
  42. //获取当前时间结构体
  43. tm get_current_time_struct();
  44. //计时开始
  45. void time_start(int key=1);
  46. //指定计时器计时结束
  47. void time_end(int key=1);
  48. //打印计时时差 精确到秒
  49. void cout_time_seconds(int key=1);
  50. //打印计时时差 精确到毫秒
  51. void cout_time_millisecond(int key=1);
  52. //打印计时时差 精确到微秒
  53. void cout_time_microsecond(int key=1);
  54. //打印计时时差 精确到纳秒
  55. void cout_time_nanosecond(int key=1);
  56. //清除计时器
  57. void clear_timer();
  58. public://get or set member variable
  59. protected://member variable
  60. private:
  61. std::map<int,time_data> timetool_map;
  62. };
  63. #endif //PKGNAME_TIME_TOOL_H