Files
date_time/doc/date_algorithms.html
2003-02-10 13:23:54 +00:00

95 lines
4.2 KiB
HTML

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>Date Generators / Algorithms</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head>
<body>
<a href="../../../index.htm">
<img align="left" src="../../../c++boost.gif" alt="C++ Boost">
</a>
<h1>Date Generators / Algorithms</h1>
<p>&nbsp;</p>
<hr>
<p>
<p>
<a href="index.html">Overall Index</a> --
<a href="gregorian.html">Gregorian Index</a> --
<a href="posix_time.html">Posix Time Index</a>
<p>
<font class="bold">Date Generators / Algorithms</font>
<p>
<a href="date_algorithms.html#header">Header</a> --
<a href="date_algorithms.html#classoverview">Class Overview</a>
<p>
<h2><a name="intro">Introduction</a></h2>
<p>
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.
<p>
<div class="fragment"><pre> <font class="keyword">using</font> <font class="keyword">namespace </font>boost::gregorian;
<font class="keyword">typedef</font> boost::date_time::nth_kday_of_month&lt;date&gt;</a> nkday;
nkday ldgen(nkday::first, Monday, Sep)); <font class="comment">//US labor day</font>
date labor_day = ldgen.get_date(2002); <font class="comment">//Calculate labor day for 2002</font>
</pre></div>
<p>
The <a href="exp-print_holidays.html">print holidays example</a> shows a detailed usage example.
<p>
<h2><a name="header">Header</a></h2>
<pre>
#include "boost/date_time/date_generators.hpp"
</pre>
<p>
<h2><a name="classoverview">Class Overview</a></h2>
<p>
<table border=1 cellspacing=3 cellpadding=3>
<tr><td><b>Class</b></td>
<td><b>Construction Parameters</b></td>
<td><b>get_date Parameter</b></td>
<td><b>Description</b></td>
<td><b>Example</b></td></tr>
<tr><td><font class="el">first_kday_after</font></td>
<td><font class="el">greg_day_of_week</font> day_of_week</td>
<td><font class="el">date</font> start_day</td>
<td>Calculate something like First Sunday after Jan 1,2002</td>
<td>first_kday_after fkaf(Monday);<br>date d = fkaf.get_date(date(2002,Jan,1));<font class="comment">//2002-Jan-07</font></td></tr>
<tr><td><font class="el">first_kday_before</font></td>
<td><font class="el">greg_day_of_week</font> day_of_week</td>
<td><font class="el">date</font> start_day</td>
<td>Calculate something like First Monday before Feb 1,2002</td>
<td>first_kday_before fkbf(Monday);<br>date d = fkbf.get_date(date(2002,Feb,1));<font class="comment">//2002-Jan-28</font></td></tr>
<tr><td><font class="el">last_kday_of_month</font></td>
<td><font class="el">greg_day_of_week</font> day_of_week<br><font class="el">greg_month</font> month</td>
<td><font class="el">greg_year</font> year</td>
<td>Calculate something like last Monday of January</td>
<td>last_kday_of_month lkm(Monday,Jan);<br>date d = lkm.get_date(2002);<font class="comment">//2002-Jan-28</font></td></tr>
<tr><td><font class="el">first_kday_of_month</font></td>
<td><font class="el">greg_day_of_week</font> day_of_week<br><font class="el">greg_month</font> month</td>
<td><font class="el">greg_year</font> year</td>
<td>Calculate something like first Monday of January</td>
<td>first_kday_of_month fkm(Monday,Jan);<br>date d = fkm.get_date(2002);<font class="comment">//2002-Jan-07</font></td></tr>
<tr><td><font class="el">partial_date</font></td>
<td><font class="el">greg_day</font> day_of_month<br>
<font class="el">greg_month</font> month</td>
<td><font class="el">greg_year</font> year</td>
<td>Generates a date by applying the year to the given month and day.</td>
<td>partial_date pd(1,Jan);<br>date d = pd.get_date(2002);<font class="comment">//2002-Jan-01</font></td></tr>
</table>
<p>
<hr>
<address><small>
<!-- hhmts start -->
Last modified: Fri Nov 29 19:40:48 MST 2002
<!-- hhmts end -->
by <a href="mailto:jeff&#64;crystalclearsoftware.com">Jeff Garland</a> &copy; 2000-2002
</small></address>
</body>
</html>