0

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

4

2 回答 2

1

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

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

long days_since_epoch_from_date(date)
date date_from_days_since_epoch(long) 
于 2013-02-26T13:32:57.103 回答
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;
}
于 2013-02-26T13:43:09.960 回答