artdaq_core  v3_09_01
TimeUtils.hh
1 #ifndef artdaq_core_Utilities_TimeUtils_h
2 #define artdaq_core_Utilities_TimeUtils_h
3 
4 #include <sys/time.h>
5 #include <chrono>
6 #include <string>
7 
8 namespace artdaq {
12 namespace TimeUtils {
22 typedef std::chrono::duration<double, std::ratio<1>> seconds;
23 
30 inline double GetElapsedTime(std::chrono::steady_clock::time_point then, std::chrono::steady_clock::time_point now = std::chrono::steady_clock::now())
31 {
32  return std::chrono::duration_cast<seconds>(now - then).count();
33 }
34 
41 inline size_t GetElapsedTimeMicroseconds(std::chrono::steady_clock::time_point then, std::chrono::steady_clock::time_point now = std::chrono::steady_clock::now())
42 {
43  return static_cast<size_t>(std::chrono::duration_cast<std::chrono::microseconds>(now - then).count());
44 }
45 
52 inline size_t GetElapsedTimeMilliseconds(std::chrono::steady_clock::time_point then, std::chrono::steady_clock::time_point now = std::chrono::steady_clock::now())
53 {
54  return static_cast<size_t>(std::chrono::duration_cast<std::chrono::milliseconds>(now - then).count());
55 }
56 
61 struct timespec get_realtime_clock();
62 
71 inline constexpr double GetElapsedTime(struct timespec const& then, struct timespec now = get_realtime_clock())
72 {
73  return now.tv_sec - then.tv_sec + ((now.tv_nsec - then.tv_nsec) / 1000000000.0);
74 }
75 
81 std::string convertUnixTimeToString(time_t inputUnixTime);
82 
88 std::string convertUnixTimeToString(struct timeval const& inputUnixTime);
89 
95 std::string convertUnixTimeToString(struct timespec const& inputUnixTime);
96 
101 uint64_t gettimeofday_us();
102 
108 double convertUnixTimeToSeconds(time_t inputUnixTime);
109 
115 double convertUnixTimeToSeconds(struct timeval const& inputUnixTime);
116 
122 double convertUnixTimeToSeconds(struct timespec const& inputUnixTime);
123 } // namespace TimeUtils
124 } // namespace artdaq
125 
126 #endif /* artdaq_core_Utilities_TimeUtils_h */
127 
128 // Local Variables:
129 // mode: c++
130 // End:
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:30
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:41
struct timespec get_realtime_clock()
Get the current time of day as a pair of seconds and nanoseconds (from clock_gettime(CLOCK_REALTIME, ...) system call)
Definition: TimeUtils.cc:58
double convertUnixTimeToSeconds(time_t inputUnixTime)
Converts a Unix time to double.
Definition: TimeUtils.cc:66
std::chrono::duration< double, std::ratio< 1 > > seconds
Definition: TimeUtils.hh:22
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:52
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