#define DATE_TIME_INLINE
#include <iostream>
#include <boost/date_time/posix_time/posix_time.hpp>
#include <boost/date_time/c_local_time_adjustor.hpp>
using namespace std;
int main()
{
using namespace boost::posix_time;
typedef boost::date_time::c_local_adjustor<ptime> local_adj;
// 1999/07/01 03:45:12 の 100時間後は…
ptime t = time_from_string( "1999-07-01 3:45:12" );
t = t + hours(100);
cout << to_simple_string(t) << endl;
// 世界標準時から現地時間に直しつつ、時刻のみ表示
cout << to_simple_string(
local_adj::utc_to_local(t).time_of_day()
) << endl;
return 0;
}
1999-Jul-05 07:45:12 16:45:12
日時の計算を行うgregorianライブラリと二つ合わせて boost::date_time ライブラリを構成しています。
こちらは、ナノ秒単位までの細かい時間情報の処理に用いることが出来ます。 文字列表現との変換や、足し算引き算、夏時間・タイムゾーンなどを考慮した UTC ←→ LocalTime 変換などの機能を備えています。