Files
date_time/xmldoc/usage_examples.xml
2004-08-30 17:58:38 +00:00

92 lines
3.2 KiB
XML

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE library PUBLIC "-//Boost//DTD BoostBook XML V1.0//EN"
"../../../tools/boostbook/dtd/boostbook.dtd">
<!-- Copyright (c) 2001-2004 CrystalClear Software, Inc.
Subject to the Boost Software License, Version 1.0.
(See accompanying file LICENSE-1.0 or http://www.boost.org/LICENSE-1.0)
-->
<section id="date_time.examples.general_usage_examples">
<title>General Usage Examples</title>
<para>
The following provides some sample usage of dates.
See <link linkend="date_time.gregorian">Date Programming</link>
for more details.
<programlisting>
using namespace boost::gregorian;
date weekstart(2002,Feb,1);
date weekend = weekstart + week(1);
date d2 = d1 + days(5);
date today = day_clock::local_day();
if (d2 &gt;= today) {} //date comparison operators
date_period thisWeek(d1,d2);
if (thisWeek.contains(today)) {}//do something
//iterate and print the week
day_iterator itr(weekstart);
while (itr &lt;= weekend) {
std::cout &lt;&lt; (*itr) &lt;&lt; std::endl;
++itr;
}
//input streaming
std::stringstream ss("2004-Jan-1");
ss &gt;&gt; d3;
//localized i/o using facets
std::locale global;
std::locale german(global,
new date_facet(de_short_month_names,
de_long_month_names,
de_special_value_names,
de_long_weekday_names,
de_long_weekday_names,
'.',
boost::date_time::ymd_order_dmy));
std::cout.imbue(global2);
date d4(2002, Oct, 1);
std::cout &lt;&lt; d4; //01.Okt.2002
//date generator functions
date d5 = next_weekday(d4, Sunday); //calculate sunday following d4
//define a shorthand for the nth_day_of_the_week_in_month function object
typedef nth_day_of_the_week_in_month nth_dow;
//US labor day is first Monday in Sept
nth_dow labor_day(nth_dow::first,Monday, Sep);
date d6 = labor_day.get_date(2004); //calculate a specific date from functor
</programlisting>
The following provides some example code using times.
See <link linkend="date_time.posix_time">Time Programming</link>
for more details.
<programlisting>
use namespace boost::posix_time;
date d(2002,Feb,1); //an arbitrary date
ptime t1(d, hours(5)+nanosec(100)); //date + time of day offset
ptime t2 = t1 - minutes(4)+seconds(2);
ptime now = second_clock::local_time(); //use the clock
date today = now.date(); //Get the date part out of the time
date tommorrow = today + date_duration(1);
ptime tommorrow_start(tommorrow); //midnight
//input streaming
std::stringstream ss("2004-Jan-1 05:21:33.20");
ss &gt;&gt; t2;
//starting at current time iterator adds by one hour
time_iterator titr(now,hours(1));
for (; titr &lt; tommorrow_start; ++titr) {
std::cout &lt;&lt; (*titr) &lt;&lt; std::endl;
}
</programlisting>
</para>
<link linkend="top">top</link>
</section>