【问题标题】:Convert Boost Gregorian Date to POD将 Boost 公历日期转换为 POD
【发布时间】:2013-02-26 13:25:58
【问题描述】:

有没有一种简单的方法可以将 boost::gregorian::date 转换为普通的旧数据类型?我需要能够通过 C DLL 接口传递它。我宁愿不来回将其转换为年/月/日组件。

【问题讨论】:

    标签: datetime boost


    【解决方案1】:
    #include <boost/date_time/gregorian/greg_date.hpp>
    #include <boost/date_time/gregorian/gregorian_io.hpp>
    #include <iostream>
    
    int main() 
    {
        boost::gregorian::date date1(2013, boost::date_time::Feb, 25);
        std::cout << date1 << std::endl;
        boost::gregorian::date::date_int_type pod = date1.day_number();
        std::cout << pod << std::endl;
        boost::gregorian::date date2(pod);
        std::cout << date2 << std::endl;
    }
    

    【讨论】:

    • 这正是我正在寻找但没有找到的东西,谢谢。
    【解决方案2】:

    您可以选择一些纪元日期,然后在“当前”日期和纪元之间获取date_duration,然后在持续时间上调用days() 以获取long。通过你的 C DLL 传递long,然后在另一边创建一个具有相同天数的新date_duration,将其添加到纪元,你应该回到原来的日期。

    您应该能够轻松地将其包装在几个函数中,例如

    long days_since_epoch_from_date(date)
    date date_from_days_since_epoch(long) 
    

    【讨论】:

      猜你喜欢
      • 2015-11-22
      • 1970-01-01
      • 2013-07-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-30
      • 2012-03-29
      相关资源
      最近更新 更多