Date Generators/AlgorithmsDate Generators/Algorithms
Introduction --
Header --
Class Overview --
Function 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.
Note: As of boost version 1_31_0, date generator names have been changed. Old names are still available but are no longer documented and may someday be deprecated
Also provided are stand-alone functions for generating a date, or calculation a duration of days. These functions take a date object and a weekday object as parameters.
All date generator classes and functions are in the boost::gregorian namespace.
The print holidays example shows a detailed usage example.
Header#include "boost/date_time/gregorian/gregorian.hpp"OverviewClass and get_date ParameterDescriptionExampleyear_based_generator
date get_date(greg_year year)A unifying (abstract) date_generator base type for: partial_date, nth_day_of_the_week_in_month, first_day_of_the_week_in_month, and last_day_of_the_week_in_month.The print holidays example shows a detailed usage example.last_day_of_the_week_in_month(greg_weekday,
greg_month)
date get_date(greg_year year)Calculate something like last Monday of Januarylast_day_of_the_week_in_month lwdm(Monday,Jan);
date d = lwdm.get_date(2002);
//2002-Jan-28first_day_of_the_week_in_month(greg_weekday,
greg_month)
date get_date(greg_year year)Calculate something like first Monday of Januaryfirst_day_of_the_week_in_month fdm(Monday,Jan);
date d = fdm.get_date(2002);
//2002-Jan-07nth_day_of_the_week_in_month(week_num,
greg_weekday,
greg_month)
date get_date(greg_year year)week_num is a public enum member of nth_day_of_the_week_in_month. Calculate something like first Monday of January, second Tuesday of March, Third Sunday of December, etc. (first through fifth are provided, fifth is the equivalent of last)typedef nth_day_of_the_week_in_month nth_dow;
nth_dow ndm(nth_dow::third, Monday,Jan);
date d = ndm.get_date(2002);
//2002-Jan-21partial_date(greg_day, greg_month)
date get_date(greg_year year)Generates a date by applying the year to the given month and day.partial_date pd(1,Jan);
date d = pd.get_date(2002);
//2002-Jan-01first_day_of_the_week_after(greg_weekday)
date get_date(date d)Calculate something like First Sunday after Jan 1,2002first_day_of_the_week_after fdaf(Monday);
date d = fdaf.get_date(date(2002,Jan,1));
//2002-Jan-07first_day_of_the_week_before(greg_weekday)
date get_date(date d)Calculate something like First Monday before Feb 1,2002first_day_of_the_week_before fdbf(Monday);
date d = fdbf.get_date(date(2002,Feb,1));
//2002-Jan-28Function OverviewFunction PrototypeDescriptionExampledays days_until_weekday date, greg_weekday) Calculates the number of days from given date until given weekday.date d(2004,Jun,1); // Tuesday
greg_weekday gw(Friday);
days_until_weekday(d, gw); // 3 daysdays days_before_weekday(date, greg_weekday) Calculates the number of day from given date to previous given weekday.date d(2004,Jun,1); // Tuesday
greg_weekday gw(Friday);
days_before_weekday(d, gw); // 4 daysdate next_weekday(date, greg_weekday) Generates a date object representing the date of the following weekday from the given date. Can return the given date.date d(2004,Jun,1); // Tuesday
greg_weekday gw1(Friday);
greg_weekday gw2(Tuesday);
next_weekday(d, gw1); // 2004-Jun-4
next_weekday(d, gw2); // 2004-Jun-1
date previous_weekday(date, greg_weekday) Generates a date object representing the date of the previous weekday from the given date. Can return the given date. date d(2004,Jun,1); // Tuesday
greg_weekday gw1(Friday);
greg_weekday gw2(Tuesday);
previous_weekday(d, gw1); // 2004-May-28
previous_weekday(d, gw2); // 2004-Jun-1