2013-02-26 52 views
0

有没有简单的方法将boost :: gregorian :: date转换为普通的旧数据类型?我需要能够通过一个C DLL接口。我宁愿不把它转换成年/月/日组件来回。将Boost阳历日期转换为POD

回答

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; 
} 
+0

这正是我一直在寻找,但没找到,THX。 – Halt 2013-02-27 15:51:04

1

你可以选择一些纪元日期,然后在你的“当前”日期和纪元之间得到date_duration,然后在持续时间上拨打days()得到long。通过您的C DLL传递long,然后在另一端创建一个具有相同天数的新date_duration,将它添加到时代,并且您应该回到原始日期。

您应该能够轻松地将其包含在一些功能中,例如,

long days_since_epoch_from_date(date) 
date date_from_days_since_epoch(long)