9b5d99078e
[SVN r43422]
67 lines
1.8 KiB
XML
67 lines
1.8 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-2005 CrystalClear Software, Inc.
|
|
Subject to the Boost Software License, Version 1.0.
|
|
(See accompanying file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
|
|
-->
|
|
|
|
<section id="date_time.examples.end_of_month_day">
|
|
<title>Last Day of the Months</title>
|
|
|
|
<para>
|
|
Example that gets a month and a year from the user and finds the last day of each remaining month of that year.
|
|
</para>
|
|
<programlisting>
|
|
<![CDATA[
|
|
/* Simple program that finds the last day of the given month,
|
|
* then displays the last day of every month left in the given year.
|
|
*/
|
|
|
|
#include "boost/date_time/gregorian/gregorian.hpp"
|
|
#include <iostream>
|
|
|
|
int
|
|
main()
|
|
{
|
|
using namespace boost::gregorian;
|
|
|
|
greg_year year(1400);
|
|
greg_month month(1);
|
|
|
|
// get a month and a year from the user
|
|
try {
|
|
int y, m;
|
|
std::cout << " Enter Year(ex: 2002): ";
|
|
std::cin >> y;
|
|
year = greg_year(y);
|
|
std::cout << " Enter Month(1..12): ";
|
|
std::cin >> m;
|
|
month = greg_month(m);
|
|
}
|
|
catch(bad_year by) {
|
|
std::cout << "Invalid Year Entered: " << by.what() << '\n'
|
|
<< "Using minimum values for month and year." << std::endl;
|
|
}
|
|
catch(bad_month bm) {
|
|
std::cout << "Invalid Month Entered" << bm.what() << '\n'
|
|
<< "Using minimum value for month. " << std::endl;
|
|
}
|
|
|
|
date start_of_next_year(year+1, Jan, 1);
|
|
date d(year, month, 1);
|
|
|
|
// add another month to d until we enter the next year.
|
|
while (d < start_of_next_year){
|
|
std::cout << to_simple_string(d.end_of_month()) << std::endl;
|
|
d += months(1);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
]]>
|
|
</programlisting>
|
|
</section>
|