将Boost Gregorian Date转换为POD

时间:2013-02-26 13:25:59

标签: datetime boost

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

2 个答案:

答案 0 :(得分:1)

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

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

long days_since_epoch_from_date(date)
date date_from_days_since_epoch(long) 

答案 1 :(得分: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;
}