$treeview $search $mathjax $extrastylesheet
artdaq_core
v3_06_01
$projectbrief
|
$projectbrief
|
$searchbox |
00001 #include "artdaq-core/Utilities/TimeUtils.hh" 00002 #include <boost/date_time/posix_time/posix_time.hpp> 00003 00004 namespace BPT = boost::posix_time; 00005 00006 std::string artdaq::TimeUtils:: 00007 convertUnixTimeToString(time_t inputUnixTime) 00008 { 00009 // whole seconds 00010 BPT::ptime posixTime = BPT::from_time_t(inputUnixTime); 00011 std::string workingString = BPT::to_simple_string(posixTime); 00012 workingString.append(" UTC"); 00013 00014 return workingString; 00015 } 00016 00017 std::string artdaq::TimeUtils:: 00018 convertUnixTimeToString(struct timeval const& inputUnixTime) 00019 { 00020 // deal with whole seconds first 00021 BPT::ptime posixTime = BPT::from_time_t(inputUnixTime.tv_sec); 00022 std::string workingString = BPT::to_simple_string(posixTime); 00023 00024 // now fractional seconds 00025 char fractionalString[20]; 00026 sprintf(fractionalString, "%06d", static_cast<int32_t>(inputUnixTime.tv_usec)); 00027 workingString.append("."); 00028 workingString.append(fractionalString); 00029 workingString.append(" UTC"); 00030 00031 return workingString; 00032 } 00033 00034 std::string artdaq::TimeUtils:: 00035 convertUnixTimeToString(struct timespec const& inputUnixTime) 00036 { 00037 // deal with whole seconds first 00038 BPT::ptime posixTime = BPT::from_time_t(inputUnixTime.tv_sec); 00039 std::string workingString = BPT::to_simple_string(posixTime); 00040 00041 // now fractional seconds 00042 char fractionalString[20]; 00043 sprintf(fractionalString, "%09ld", inputUnixTime.tv_nsec); 00044 workingString.append("."); 00045 workingString.append(fractionalString); 00046 workingString.append(" UTC"); 00047 00048 return workingString; 00049 } 00050 00051 uint64_t artdaq::TimeUtils::gettimeofday_us() 00052 { 00053 struct timeval tv; 00054 gettimeofday(&tv, nullptr); 00055 return static_cast<uint64_t>(tv.tv_sec) * 1000000 + tv.tv_usec; 00056 } 00057 00058 struct timespec artdaq::TimeUtils::get_realtime_clock() 00059 { 00060 struct timespec ts; 00061 clock_gettime(CLOCK_REALTIME, &ts); 00062 return ts; 00063 } 00064 00065 double artdaq::TimeUtils:: 00066 convertUnixTimeToSeconds(time_t inputUnixTime) 00067 { 00068 return static_cast<double>(inputUnixTime); 00069 } 00070 00071 double artdaq::TimeUtils:: 00072 convertUnixTimeToSeconds(struct timeval const& inputUnixTime) 00073 { 00074 return static_cast<double>(inputUnixTime.tv_sec) + inputUnixTime.tv_usec / 1000000.0; 00075 } 00076 00077 double artdaq::TimeUtils:: 00078 convertUnixTimeToSeconds(struct timespec const& inputUnixTime) 00079 { 00080 return static_cast<double>(inputUnixTime.tv_sec) + inputUnixTime.tv_nsec / 1000000000.0; // Mr. Billion 00081 }