c++ - 如何使用 boost::date_time 获取两个日期之间的天数

标签 c++ datetime boost

在 boost::date_time 中是否有任何可用的 API 来获取两个日期之间的天数,这也是特定于日历的?

例如,2005/01/01 和 2006/12/31 之间的天数在七天日历中为 730,在五天日历中为 504。

最佳答案

是的:posix_time 来拯救

Live On Coliru

#include <boost/date_time/gregorian/greg_date.hpp>
#include <iostream>

int main() {
    using boost::gregorian::date;

    date a { 2005, 1, 1 }, b { 2006, 12, 31 };

    std::cout << (b-a).days() << "\n";
}

打印

729 [1]

如果您想使用公历日期 + 时间 (hh:mm:ss.fffffff),请使用 posix_time::ptimelocal_time::local_date_time 为此添加了时区意识(例如,正确了解夏令时)


琐事 顺便说一句,这个数也是 27 的平方和 9 的立方,由于这些性质,一个完美的 totient 数,一个居中的八角形数, 和一个 Smith 数。它不是四个连续素数的和

关于c++ - 如何使用 boost::date_time 获取两个日期之间的天数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30382628/

相关文章:

c++ - 使用 Qt 和 vector 发出文件行读取

c# - 为什么 DateTime.Parse 不能解析 UTC 日期

c++ - 当指定了意外的位置参数时,boost::program_options不报告错误

mysql - 重写条件总和和计数查询/日期范围比较的更好方法

PHP:从数组中获取两个日期之间的元素

c++ - 链接 boost 内存映射文件

c++ - 使用 Boost 基本截止时间计时器来调用类方法

C++ 标准库串行端口 (UART) 接口(interface)

C++ 错误 "member function declared with ' override' 未覆盖基类成员”

c++ - 遍历内部复杂容器