00001 #ifndef artdaq_core_Utilities_TimeUtils_h
00002 #define artdaq_core_Utilities_TimeUtils_h
00003
00004 #include <sys/time.h>
00005 #include <string>
00006 #include <chrono>
00007
00008 namespace artdaq
00009 {
00013 namespace TimeUtils
00014 {
00024 typedef std::chrono::duration<double, std::ratio<1>> seconds;
00025
00032 inline constexpr double GetElapsedTime(std::chrono::steady_clock::time_point then, std::chrono::steady_clock::time_point now = std::chrono::steady_clock::now())
00033 {
00034 return std::chrono::duration_cast<seconds>(now - then).count();
00035 }
00036
00043 inline constexpr size_t GetElapsedTimeMicroseconds(std::chrono::steady_clock::time_point then, std::chrono::steady_clock::time_point now = std::chrono::steady_clock::now())
00044 {
00045 return static_cast<size_t>(GetElapsedTime(then, now) * 1000000);
00046 }
00047
00054 inline constexpr size_t GetElapsedTimeMilliseconds(std::chrono::steady_clock::time_point then, std::chrono::steady_clock::time_point now = std::chrono::steady_clock::now())
00055 {
00056 return static_cast<size_t>(GetElapsedTime(then, now) * 1000);
00057 }
00058
00064 std::string convertUnixTimeToString(time_t inputUnixTime);
00065
00071 std::string convertUnixTimeToString(struct timeval const& inputUnixTime);
00072
00078 std::string convertUnixTimeToString(struct timespec const& inputUnixTime);
00079
00084 uint64_t gettimeofday_us();
00085
00091 double convertUnixTimeToSeconds(time_t inputUnixTime);
00092
00098 double convertUnixTimeToSeconds(struct timeval const& inputUnixTime);
00099
00105 double convertUnixTimeToSeconds(struct timespec const& inputUnixTime);
00106 }
00107 }
00108
00109 #endif
00110
00111
00112
00113