A way to turn boost::posix_time::ptime into an __int64

boost, c++

Solution

Converting a ptime to an integer is rather meaningless, since ptime is an abstraction of the actual time. An integer based time is a representation of that time as a count from an epoch. What you (probably) want to do is generate a time_duration from your time to the epoch you are interested in, then use the time_duration::ticks() to get the 64-bit integer. You may have to scale your result to your desired precision:

ptime myEpoch(date(1970,Jan,1)); // Or whatever your epocj is.
time_duration myTimeFromEpoch = myTime - myEpoch;
boost::int64_t myTimeAsInt = myTimeFromEpoch.ticks();

Problem

Does anyone know if there is a good way to turn a `boost::posix_time::ptime` into an `__int64` value. (I have compiled the microsecond version, not the nanosecond version). I need to do this somehow as I am looking to store the resulting `__int64` in a `union` type which uses the raw data for a high-performance application. Some type of Memento functionality like this would be highly useful for me. I'd like to avoid casts, if possible, but will resort to them if I need to.

Original source