0

boost::gregorian::date を Plain old データ型に変換する簡単な方法はありますか? C DLL インターフェイスを介して渡すことができる必要があります。年/月/日のコンポーネントに前後に変換したくありません。

4

2 に答える 2

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 に答える
1

エポック日付を選択してdate_durationから、「現在の」日付とエポックdays()の間の を取得し、期間を呼び出して を取得できますlonglongC DLL を介して渡し、反対側date_durationで同じ日数で新しいものを作成し、それをエポックに追加すると、元の日付に戻るはずです。

これをいくつかの関数で簡単にラップできるはずです。

long days_since_epoch_from_date(date)
date date_from_days_since_epoch(long) 
于 2013-02-26T13:32:57.103 に答える