artdaq_core  v3_04_02
TimeUtils.hh
1 #ifndef artdaq_core_Utilities_TimeUtils_h
2 #define artdaq_core_Utilities_TimeUtils_h
3 
4 #include <sys/time.h>
5 #include <string>
6 #include <chrono>
7 
8 namespace artdaq
9 {
13  namespace TimeUtils
14  {
24  typedef std::chrono::duration<double, std::ratio<1>> seconds;
25 
32  inline constexpr double GetElapsedTime(std::chrono::steady_clock::time_point then, std::chrono::steady_clock::time_point now = std::chrono::steady_clock::now())
33  {
34  return std::chrono::duration_cast<seconds>(now - then).count();
35  }
36 
43  inline constexpr size_t GetElapsedTimeMicroseconds(std::chrono::steady_clock::time_point then, std::chrono::steady_clock::time_point now = std::chrono::steady_clock::now())
44  {
45  return static_cast<size_t>(GetElapsedTime(then, now) * 1000000);
46  }
47 
54  inline constexpr size_t GetElapsedTimeMilliseconds(std::chrono::steady_clock::time_point then, std::chrono::steady_clock::time_point now = std::chrono::steady_clock::now())
55  {
56  return static_cast<size_t>(GetElapsedTime(then, now) * 1000);
57  }
58 
64  std::string convertUnixTimeToString(time_t inputUnixTime);
65 
71  std::string convertUnixTimeToString(struct timeval const& inputUnixTime);
72 
78  std::string convertUnixTimeToString(struct timespec const& inputUnixTime);
79 
84  uint64_t gettimeofday_us();
85 
91  double convertUnixTimeToSeconds(time_t inputUnixTime);
92 
98  double convertUnixTimeToSeconds(struct timeval const& inputUnixTime);
99 
105  double convertUnixTimeToSeconds(struct timespec const& inputUnixTime);
106  }
107 }
108 
109 #endif /* artdaq_core_Utilities_TimeUtils_h */
110 
111 // Local Variables:
112 // mode: c++
113 // End:
constexpr size_t GetElapsedTimeMilliseconds(std::chrono::steady_clock::time_point then, std::chrono::steady_clock::time_point now=std::chrono::steady_clock::now())
Gets the number of milliseconds in the given time interval
Definition: TimeUtils.hh:54
constexpr size_t GetElapsedTimeMicroseconds(std::chrono::steady_clock::time_point then, std::chrono::steady_clock::time_point now=std::chrono::steady_clock::now())
Gets the number of microseconds in the given time interval
Definition: TimeUtils.hh:43
double convertUnixTimeToSeconds(time_t inputUnixTime)
Converts a Unix time to double.
Definition: TimeUtils.cc:59
constexpr double GetElapsedTime(std::chrono::steady_clock::time_point then, std::chrono::steady_clock::time_point now=std::chrono::steady_clock::now())
Get the number of seconds in the given interval
Definition: TimeUtils.hh:32
std::chrono::duration< double, std::ratio< 1 > > seconds
Definition: TimeUtils.hh:24
std::string convertUnixTimeToString(time_t inputUnixTime)
Converts a Unix time to its string representation, in UTC.
Definition: TimeUtils.cc:7
uint64_t gettimeofday_us()
Get the current time of day in microseconds (from gettimeofday system call)
Definition: TimeUtils.cc:51