Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/144.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 为什么我们从boost::posix_time::ptime中减去unix时代以获得时间_C++_Boost_Unix Timestamp - Fatal编程技术网

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

C++ 为什么我们从boost::posix_time::ptime中减去unix时代以获得时间,c++,boost,unix-timestamp,C++,Boost,Unix Timestamp,有人能解释一下为什么我们需要从boost::posix_time::ptime中减去boost::gregorian::date(1970,1,1),以获得posix时间符号(即自1970年以来的微秒,UTC时区的1,1午夜) 例如,此链接提供了明确的说明,但没有说明原因: 谢谢,因为您正在将日期转换为时间 从: Posix时间 定义具有纳秒/微秒的非调整时间系统 分辨率和稳定计算属性[…]此时间系统使用公历实现时间表示的日期部分 因此,boost::posix_time::p_time不仅仅

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

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


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

从:

Posix时间

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

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


因此,如果您想要一个Posix Epoch时间(从UTC时区1970年开始,1,1午夜),您需要对所有这些年份进行减法。

该链接描述了如何将特定时间点转换为持续时间。您熟悉其中的区别吗?我认为有趣的是,
ptime
类包含了一个从
time\t
的转换,该转换明确记录了UNIX时代的参与:
ptime from\u\t(std::time\t)
-“从时间参数创建ptime。时间中的秒数被加到1970-01年1月的时间点上,但没有反函数。我想知道为什么?