# Date Generators / Algorithms

Overall Index -- Gregorian Index -- Posix Time Index

### Date Generators / Algorithms

Header -- Class Overview

## Introduction

Date algorithms or generators are tools for generating other dates or schedules of dates. A generator function starts with some part of a date such as a month and day and is supplied another part to then generate a concrete date. This allows the programmer to represent concepts such as "The first Sunday in February" and then create a concrete set of dates when provided with one or more years.
日付アルゴリズムあるいはジェネレータは、他の日付あるいは日付のスケジュールを生成するためのツールである。 生成関数は、月と日のような日付のある部分で始まり、その後、具体的な日付を生成するために残りの部分を供給される。 これは、プログラマが「2月の最初の日曜日」のような概念を表わし、次に、1つ以上の年を供給された時に日付の具体的なセットを生成することを想定している。

      using namespace boost::gregorian;
      typedef boost::date_time::nth_kday_of_month<date> nkday;
      nkday ldgen(nkday::first, Monday, Sep)); //US labor day
      date labor_day = ldgen.get_date(2002); //Calculate labor day for 2002

print holidays example に詳細な使い方の例を示す。

## Header

    #include "boost/date_time/date_generators.hpp"

## Class Overview

Class | Construction Parameters | get_date Parameter | Description | Example
--- | --- | --- | --- | ---
first_kday_after | greg_day_of_week day_of_week | date start_day | 2002年1月1日以降の最初の日曜日のといったものを計算する | first_kday_after fkaf(Monday); date d = fkaf.get_date(date(2002,Jan,1));//2002-Jan-07
first_kday_before | greg_day_of_week day_of_week | date start_day | 2002年2月1日以前の最初の月曜日といったものを計算する | first_kday_before fkbf(Monday); date d = fkbf.get_date(date(2002,Feb,1));//2002-Jan-28
last_kday_of_month | greg_day_of_week day_of_week greg_month month | greg_year year | 1月最後の月曜日といったものを計算する | last_kday_of_month lkm(Monday,Jan); date d = lkm.get_date(2002);//2002-Jan-28
first_kday_of_month | greg_day_of_week day_of_week greg_month month | greg_year year | 1月最初の月曜日といったものを計算する | first_kday_of_month fkm(Monday,Jan); date d = fkm.get_date(2002);//2002-Jan-07
partial_date | greg_month month greg_day day_of_month | greg_year year | Generates a date by applying the year to the given month and day. 月および日を与えられた日付に、年を適用することにより日付を生成する | partial_date pd(Jan,1); date d = pd.get_date(2002);//2002-Jan-01