$treeview $search $mathjax $extrastylesheet
artdaq_core
v3_04_20a
$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, NULL); 00055 return (uint64_t)tv.tv_sec * 1000000 + tv.tv_usec; 00056 } 00057 00058 double artdaq::TimeUtils:: 00059 convertUnixTimeToSeconds(time_t inputUnixTime) 00060 { 00061 return static_cast<double>(inputUnixTime); 00062 } 00063 00064 double artdaq::TimeUtils:: 00065 convertUnixTimeToSeconds(struct timeval const& inputUnixTime) 00066 { 00067 return static_cast<double>(inputUnixTime.tv_sec) + inputUnixTime.tv_usec / 1000000.0; 00068 } 00069 00070 double artdaq::TimeUtils:: 00071 convertUnixTimeToSeconds(struct timespec const& inputUnixTime) 00072 { 00073 return static_cast<double>(inputUnixTime.tv_sec) + inputUnixTime.tv_nsec / 1000000000.0; // Mr. Billion 00074 }