日付の計算には、Boost.Date_TimeライブラリのGregorianを使用する。
月末日を取得するには、boost::gregorian::gregorian_calendar::end_of_month_day()
関数を使用する。
#include <iostream>
#include <boost/date_time/gregorian/gregorian.hpp>
int main()
{
using namespace boost::gregorian;
const int day = gregorian_calendar::end_of_month_day(2011, 2);
std::cout << day << std::endl;
}
実行結果:
28
Boost.DateTimeのboost::gregorian::date
型は、operator+()
やoperator-()
を使用して、日付の加減算を行うことができる。
年の加減算にはyears
型、月の加減算にはmonths
型、日付の加減算にはdays
型を使用する。
以下の例では、2011年4月1日に1ヶ月を加算し、その後1日を減算することで、2011年4月の末日を求めている。
#include <iostream>
#include <boost/date_time/gregorian/gregorian.hpp>
using namespace boost::gregorian;
int main()
{
const date d1(2011, Apr, 1);
const date d2 = d1 + months(1) - days(1);
std::cout << to_simple_string(d2) << std::endl;
}
実行結果:
2011-Apr-30
Boost.Dateの月を表すenum
値は、boost::date_time
名前空間において、以下のように定義されている:
enum 値 |
月 |
---|---|
Jan |
1 |
Feb |
2 |
Mar |
3 |
Apr |
4 |
May |
5 |
Jun |
6 |
Jul |
7 |
Aug |
8 |
Sep |
9 |
Oct |
10 |
Nov |
11 |
Dec |
12 |