将boost :: posix_time :: ptime转换为__int64的方法

15 c++ boost

有没有人知道是否有一种很好的方法将一个boost::posix_time::ptime变成一个__int64值.(我已经编译了微秒版本,而不是纳秒版本).

我需要以某种方式执行此操作,因为我希望将结果存储为使用原始数据__int64union类型以用于高性能应用程序.某些类型的Memento功能对我来说非常有用.如果可能的话,我想避免演员阵容,但如果我需要,我会求助于他们.

zda*_*dan 19

将ptime转换为整数是没有意义的,因为ptime是实际时间的抽象.基于整数的时间表示该时间作为来自时期的计数.您(可能)想要做的是从您感兴趣的时间生成time_duration,然后使用time_duration :: ticks()获取64位整数.您可能需要将结果扩展到所需的精度:

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