mirror of
https://github.com/boostorg/date_time.git
synced 2026-02-23 15:42:20 +00:00
92 lines
4.3 KiB
HTML
92 lines
4.3 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>Example Documentation</title>
|
|
<link href="doxygen.css" rel="stylesheet" type="text/css">
|
|
</head><body bgcolor="#ffffff">
|
|
<!-- Generated by Doxygen 1.2.10 -->
|
|
|
|
<hr><h1>period_calc.cpp</h1> Calculates if a date is in an 'irregular' collection of periods using period calculation functions.
|
|
<p>
|
|
<div class="fragment"><pre><font class="comment">/*</font>
|
|
<font class="comment">This example demonstrates a simple use of periods for the calculation</font>
|
|
<font class="comment">of date information.</font>
|
|
<font class="comment"></font>
|
|
<font class="comment">The example calculates if a given date is a weekend or holiday</font>
|
|
<font class="comment">given an exclusion set. That is, each weekend or holiday is</font>
|
|
<font class="comment">entered into the set as a time interval. Then if a given date</font>
|
|
<font class="comment">is contained within any of the intervals it is considered to</font>
|
|
<font class="comment">be within the exclusion set and hence is a offtime.</font>
|
|
<font class="comment"></font>
|
|
<font class="comment">Output:</font>
|
|
<font class="comment">Number Excluded Periods: 5</font>
|
|
<font class="comment">20020202/20020203</font>
|
|
<font class="comment">20020209/20020210</font>
|
|
<font class="comment">20020212/20020212</font>
|
|
<font class="comment">20020216/20020217</font>
|
|
<font class="comment">In Exclusion Period: 20020216 --> 20020216/20020217</font>
|
|
<font class="comment">20020223/20020224</font>
|
|
<font class="comment"></font>
|
|
<font class="comment">*/</font>
|
|
|
|
|
|
<font class="preprocessor">#include "boost/gdtl/gregorian/gregorian.hpp"</font>
|
|
<font class="preprocessor">#include <set></font>
|
|
<font class="preprocessor">#include <algorithm></font>
|
|
<font class="preprocessor">#include <iostream></font>
|
|
|
|
<font class="keyword">typedef</font> std::set<gregorian::date_period> date_period_set;
|
|
|
|
<font class="comment">//Simple population of the exclusion set</font>
|
|
date_period_set
|
|
generateExclusion()<font class="keyword"></font>
|
|
<font class="keyword"></font>{
|
|
<font class="keyword">using</font> <font class="keyword">namespace </font>gregorian;
|
|
date_period periods_array[] =
|
|
{ date_period(date(2002,Feb,2), date(2002,Feb,4)),<font class="comment">//weekend of 2nd-3rd</font>
|
|
date_period(date(2002,Feb,9), date(2002,Feb,11)),
|
|
date_period(date(2002,Feb,16), date(2002,Feb,18)),
|
|
date_period(date(2002,Feb,23), date(2002,Feb,25)),
|
|
date_period(date(2002,Feb,12), date(2002,Feb,13))<font class="comment">//a random holiday 2-12</font>
|
|
};
|
|
<font class="keyword">const</font> <font class="keywordtype">int</font> num_periods = <font class="keyword">sizeof</font>(periods_array)/<font class="keyword">sizeof</font>(date_period);
|
|
|
|
date_period_set ps;
|
|
<font class="comment">//insert the periods in the set</font>
|
|
std::insert_iterator<date_period_set> itr(ps, ps.begin());
|
|
std::copy(periods_array, periods_array+num_periods, itr );
|
|
<font class="keywordflow">return</font> ps;
|
|
|
|
}
|
|
|
|
|
|
<font class="keywordtype">int</font> main()<font class="keyword"> </font>
|
|
<font class="keyword"></font>{
|
|
<font class="keyword">using</font> <font class="keyword">namespace </font>gregorian;
|
|
|
|
date_period_set ps = generateExclusion();
|
|
std::cout << <font class="stringliteral">"Number Excluded Periods: "</font> << ps.size() << std::endl;
|
|
|
|
date d(2002,Feb,16);
|
|
date_period_set::const_iterator i = ps.begin();
|
|
<font class="comment">//print the periods, check for containment</font>
|
|
<font class="keywordflow">for</font> (;i != ps.end(); i++) {
|
|
std::cout << to_iso_string(*i) << std::endl;
|
|
<font class="comment">//if date is in exclusion period then print it</font>
|
|
<font class="keywordflow">if</font> (i->contains(d)) {
|
|
std::cout << <font class="stringliteral">"In Exclusion Period: "</font>
|
|
<< to_iso_string(d) << <font class="stringliteral">" --> "</font> << to_iso_string(*i)
|
|
<< std::endl;
|
|
}
|
|
}
|
|
|
|
<font class="keywordflow">return</font> 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
</pre></div><hr><address><small>
|
|
Generated Wed Mar 13 13:38:03 2002 by <a href="http://www.doxygen.org">Doxygen</a> for <a href="http://www.crystalclearsoftware.com">CrystalClear Software</a> © 2000-2002</small></address>
|
|
</body>
|
|
</html>
|