You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在C++中创建Date对象?求对应Python代码的C++实现

C++中创建日期对象并实现日期运算的正确方式

C++20 标准实现

C++20 在 <chrono> 库中正式引入了日历日期类型,完全可以对应你提供的Python代码逻辑:

#include <chrono>
#include <iostream>

int main() {
    // 创建2020年5月17日的日期对象
    auto x = std::chrono::year_month_day{
        std::chrono::year{2020}, 
        std::chrono::month{5}, 
        std::chrono::day{17}
    };

    // 定义1天的时间间隔
    auto delta = std::chrono::days{1};

    // 日期加1天,需先转换为sys_days(基于系统时钟的天数时间点)再运算
    x = std::chrono::sys_days{x} + delta;

    // 输出结果验证
    std::cout << x << std::endl;
    return 0;
}

关键说明:

  • std::chrono::year_month_day 就是对应Python datetime.date 的日历日期类型,支持直接通过年、月、日构造。
  • 直接对 year_month_day 做加减运算需要先转成 sys_days,因为日历日期的加减要处理闰年、不同月份天数等逻辑,转换后可直接与 days 类型的时长相加。
  • 编译时需开启C++20支持,例如GCC添加 -std=c++20 参数。

C++20 之前的替代方案

如果编译器不支持C20,可使用Howard Hinnant的date库(这是C20日期库的原型实现,兼容C++11及以上版本):

#include "date/date.h"
#include <iostream>

int main() {
    using namespace date;

    // 创建2020年5月17日的日期对象
    auto x = year_month_day{year{2020}, month{5}, day{17}};

    // 定义1天的时间间隔
    auto delta = days{1};

    // 日期加1天
    x = sys_days{x} + delta;

    // 输出结果
    std::cout << x << std::endl;
    return 0;
}

补充说明:

  • 你之前接触的 time_point 是和具体时钟绑定的时间点类型(如系统时钟、稳态时钟),而 year_month_day 是纯粹的日历日期,更贴合你Python代码的需求。

内容的提问来源于stack exchange,提问作者mascai

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 05:45:11