为什么我们从boost :: posix_time :: ptime中减去unix时代以获得time_t

时间:2014-06-12 20:52:57

标签: c++ boost unix-timestamp

有人可以解释为什么我们需要从boost :: posix_time :: ptime中减去boost :: gregorian :: date(1970,1,1)以获得POSIX时间表示法(即自1970年以来的微秒, 1午夜UTC时区)

例如,此链接提供了明确的说明,但不是原因:

How do I convert boost::posix_time::ptime to time_t?

由于

1 个答案:

答案 0 :(得分:2)

因为您要将日期转换为时间

来自Boost documentation

Posix Time

  

使用纳秒/微秒定义未调整的时间系统   分辨率和稳定的计算属性[...] 此时间系统使用公历来实现时间表示的日期部分

所以boost::posix_time::p_time不仅仅是纪元时间(例如,time()返回),而是日期和时间,表达(显然)自格里高利历的开头。

因此,如果你想要一个Posix Epoch 时间(从1970,11 UTC午夜时区开始),你将需要减去所有这些年份。