为什么我们从boost::posix_time::ptime中减去unix epoch来获得time_t
Why we substract the unix epoch from boost::posix_time::ptime to obtain time_t
谁能解释一下为什么我们需要从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时区),你需要做所有这些年份的减法。
相关文章:
- 在UNIX系统中使用DIR查找文件的字节大小
- 当套接字连接断开时检测C/C++Unix
- C++:floor unix时间戳到UTC月份
- 如何在C/C++中用FD_set Unix设置套接字文件描述符
- 应用程序崩溃并显示"symbol _ZdlPvm, version Qt_5 not defined in file libQt5Core.so.5 with link time reference"
- 外壳包装器句柄/执行交互式命令管道C++ UNIX
- C++:如何将 unix 时间的字符串转换为 *tm?(使用时间错误:"cannot convert 'String' to 'tm*' ")
- createFile() 和 DeviceIoControl() 等效于 Unix/Linux 中的卷设备
- 如何将 jsoncpp 库包含在 unix 上的项目中?
- 为什么我会收到"Run-Time Check Failure #2 - Stack around the variable 'pr' was corrupted"错误?
- 如何"buffer" UNIX 信号
- 从Qt上的UNIX域套接字(QLocalSocket)读取
- 为什么对于gcc来说,"UNIX"和"unix"宏不是一回事?
- 解析某些行的文本和输出"time of appearance"
- 如何设置Qt应用程序以使用类Unix系统的实际环境变量?
- 将带斜杠的 Unix 路径转换为 Windows 路径
- 将 unix 时间戳转换为人类可读的日期
- 从ubuntu上的utc时间计算unix时间
- c/在Unix时间和"Gregorian time"之间转换
- boost::gregori::time到unix时间戳的时间为双