123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- <?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>
|