I need to convert double with number of seconds since the epoch to ptime
. I\'m prety sure there must be an easy way to do this, but I couldn\'t find anything. T
For a machine that has boost date/time compiled to the default level of microsecond resolution, try this:
double ts = 1250524800.5;
// Use floor() here if seconds are always positive.
time_t secondsSinceEpoch = floor(ts);
long microsecondsSinceSecond =
floor((ts - static_cast(secondsSinceEpoch)) * 1000000);
boost::posix_time::ptime result =
boost::posix_time::from_time_t(secondsSinceEpoch);
boost::posix_time::time_duration fractionalSeconds(0, 0, 0,
microsecondsSinceSecond);
result += fractionalSeconds;
cout << "Time stamp is " << result << endl;
The output for this is "Time stamp is 2009-Aug-17 16:00:00.500000" on my linux box.