有人可以解释为什么我们需要从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?
由于
答案 0 :(得分:2)
因为您要将日期转换为时间。
Posix Time
使用纳秒/微秒定义未调整的时间系统 分辨率和稳定的计算属性[...] 此时间系统使用公历来实现时间表示的日期部分。
所以boost::posix_time::p_time
不仅仅是纪元时间(例如,time()
返回),而是日期和时间,表达(显然)自格里高利历的开头。
因此,如果你想要一个Posix Epoch 时间(从1970,11 UTC午夜时区开始),你将需要减去所有这些年份。