2013-02-26 97 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)