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