为什么我们从boost::posix_time::ptime中减去unix epoch来获得time_t

Why we substract the unix epoch from boost::posix_time::ptime to obtain time_t

本文关键字:time unix epoch ptime 我们 boost posix 为什么      更新时间:2023-10-16

谁能解释一下为什么我们需要从boost::posix_time::ptime中减去boost::gregorian::date(1970,1,1)来获得POSIX时间符号(即自1970,1,1午夜UTC时区以来的微秒数)

例如,这个链接提供了明确的说明,但没有说明原因:

如何转换boost::posix_time::ptime到time_t?

谢谢

因为您正在将日期转换为时间

来自Boost文档:

Posix时间

定义一个以纳秒/微秒为单位的非调整时间系统分辨率和稳定的计算特性[…]这个时间系统使用公历来实现时间表示的日期部分

因此,boost::posix_time::p_time不仅是历元时间(例如,time()返回的),而且是日期和时间,显然是从公历开始表示的。

所以如果你想要一个Posix Epoch Time(从1970年开始,1,1午夜UTC时区),你需要做所有这些年份的减法。