[code.view]

[top] / python / PyMOTW / docs / calendar / index.html


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    
    <title>calendar – Work with dates &mdash; Python Module of the Week</title>
    <link rel="stylesheet" href="../_static/sphinxdoc.css" type="text/css" />
    <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
    <script type="text/javascript">
      var DOCUMENTATION_OPTIONS = {
        URL_ROOT:    '../',
        VERSION:     '1.132',
        COLLAPSE_INDEX: false,
        FILE_SUFFIX: '.html',
        HAS_SOURCE:  true
      };
    </script>
    <script type="text/javascript" src="../_static/jquery.js"></script>
    <script type="text/javascript" src="../_static/underscore.js"></script>
    <script type="text/javascript" src="../_static/doctools.js"></script>
    <link rel="author" title="About these documents" href="../about.html" />
    <link rel="top" title="Python Module of the Week" href="../index.html" />
    <link rel="up" title="Data Types" href="../data_types.html" />
    <link rel="next" title="collections – Container data types" href="../collections/index.html" />
    <link rel="prev" title="datetime – Date/time value manipulation" href="../datetime/index.html" /> 
  </head>
  <body>
    <div class="related">
      <h3>Navigation</h3>
      <ul>
        <li class="right" style="margin-right: 10px">
          <a href="../genindex.html" title="General Index"
             accesskey="I">index</a></li>
        <li class="right" >
          <a href="../py-modindex.html" title="Python Module Index"
             >modules</a> |</li>
        <li class="right" >
          <a href="../collections/index.html" title="collections – Container data types"
             accesskey="N">next</a> |</li>
        <li class="right" >
          <a href="../datetime/index.html" title="datetime – Date/time value manipulation"
             accesskey="P">previous</a> |</li>
        <li><a href="../contents.html">PyMOTW</a> &raquo;</li>
          <li><a href="../data_types.html" accesskey="U">Data Types</a> &raquo;</li> 
      </ul>
    </div>
      <div class="sphinxsidebar">
        <div class="sphinxsidebarwrapper">
  <h3><a href="../contents.html">Table Of Contents</a></h3>
  <ul>
<li><a class="reference internal" href="#">calendar &#8211; Work with dates</a><ul>
<li><a class="reference internal" href="#formatting-examples">Formatting Examples</a></li>
<li><a class="reference internal" href="#calculating-dates">Calculating Dates</a></li>
</ul>
</li>
</ul>

  <h4>Previous topic</h4>
  <p class="topless"><a href="../datetime/index.html"
                        title="previous chapter">datetime &#8211; Date/time value manipulation</a></p>
  <h4>Next topic</h4>
  <p class="topless"><a href="../collections/index.html"
                        title="next chapter">collections &#8211; Container data types</a></p>
  <h3>This Page</h3>
  <ul class="this-page-menu">
    <li><a href="../_sources/calendar/index.txt"
           rel="nofollow">Show Source</a></li>
  </ul>
<div id="searchbox" style="display: none">
  <h3>Quick search</h3>
    <form class="search" action="../search.html" method="get">
      <input type="text" name="q" size="18" />
      <input type="submit" value="Go" />
      <input type="hidden" name="check_keywords" value="yes" />
      <input type="hidden" name="area" value="default" />
    </form>
    <p class="searchtip" style="font-size: 90%">
    Enter search terms or a module, class or function name.
    </p>
</div>
<script type="text/javascript">$('#searchbox').show(0);</script>
        </div>
      </div>

    <div class="document">
      <div class="documentwrapper">
        <div class="bodywrapper">
          <div class="body">
            
  <div class="section" id="module-calendar">
<span id="calendar-work-with-dates"></span><h1>calendar &#8211; Work with dates<a class="headerlink" href="#module-calendar" title="Permalink to this headline">¶</a></h1>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
<tr class="field"><th class="field-name">Purpose:</th><td class="field-body">The calendar module implements classes for working with dates to manage year/month/week oriented values.</td>
</tr>
<tr class="field"><th class="field-name">Python Version:</th><td class="field-body">1.4, with updates in 2.5</td>
</tr>
</tbody>
</table>
<p>The calendar module defines the Calendar class, which encapsulates
calculations for values such as the dates of the weeks in a given month or
year. In addition, the TextCalendar and HTMLCalendar classes can produce
pre-formatted output.</p>
<div class="section" id="formatting-examples">
<h2>Formatting Examples<a class="headerlink" href="#formatting-examples" title="Permalink to this headline">¶</a></h2>
<p>A very simple example which produces formatted text output for a month
using TextCalendar might use the prmonth() method.</p>
<div class="highlight-python"><div class="highlight"><pre><span class="kn">import</span> <span class="nn">calendar</span>

<span class="n">c</span> <span class="o">=</span> <span class="n">calendar</span><span class="o">.</span><span class="n">TextCalendar</span><span class="p">(</span><span class="n">calendar</span><span class="o">.</span><span class="n">SUNDAY</span><span class="p">)</span>
<span class="n">c</span><span class="o">.</span><span class="n">prmonth</span><span class="p">(</span><span class="mi">2007</span><span class="p">,</span> <span class="mi">7</span><span class="p">)</span>
</pre></div>
</div>
<p>The example configures TextCalendar to start weeks on Sunday,
following the American convention. The default is to use the European
convention of starting a week on Monday.</p>
<p>The output looks like:</p>
<div class="highlight-python"><pre>$ python calendar_textcalendar.py

     July 2007
Su Mo Tu We Th Fr Sa
 1  2  3  4  5  6  7
 8  9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31</pre>
</div>
<p>The HTML output for the same time period is slightly different, since there is
no prmonth() method:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="kn">import</span> <span class="nn">calendar</span>

<span class="n">c</span> <span class="o">=</span> <span class="n">calendar</span><span class="o">.</span><span class="n">HTMLCalendar</span><span class="p">(</span><span class="n">calendar</span><span class="o">.</span><span class="n">SUNDAY</span><span class="p">)</span>
<span class="k">print</span> <span class="n">c</span><span class="o">.</span><span class="n">formatmonth</span><span class="p">(</span><span class="mi">2007</span><span class="p">,</span> <span class="mi">7</span><span class="p">)</span>
</pre></div>
</div>
<p>The rendered output looks roughly the same, but is wrapped with HTML tags.  You can also see that each table cell has a class attribute corresponding to the day of the week.</p>
<div class="highlight-python"><pre>$ python calendar_htmlcalendar.py

&lt;table border="0" cellpadding="0" cellspacing="0" class="month"&gt;
&lt;tr&gt;&lt;th colspan="7" class="month"&gt;July 2007&lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th class="sun"&gt;Sun&lt;/th&gt;&lt;th class="mon"&gt;Mon&lt;/th&gt;&lt;th class="tue"&gt;Tue&lt;/th&gt;&lt;th class="wed"&gt;Wed&lt;/th&gt;&lt;th class="thu"&gt;Thu&lt;/th&gt;&lt;th class="fri"&gt;Fri&lt;/th&gt;&lt;th class="sat"&gt;Sat&lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="sun"&gt;1&lt;/td&gt;&lt;td class="mon"&gt;2&lt;/td&gt;&lt;td class="tue"&gt;3&lt;/td&gt;&lt;td class="wed"&gt;4&lt;/td&gt;&lt;td class="thu"&gt;5&lt;/td&gt;&lt;td class="fri"&gt;6&lt;/td&gt;&lt;td class="sat"&gt;7&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="sun"&gt;8&lt;/td&gt;&lt;td class="mon"&gt;9&lt;/td&gt;&lt;td class="tue"&gt;10&lt;/td&gt;&lt;td class="wed"&gt;11&lt;/td&gt;&lt;td class="thu"&gt;12&lt;/td&gt;&lt;td class="fri"&gt;13&lt;/td&gt;&lt;td class="sat"&gt;14&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="sun"&gt;15&lt;/td&gt;&lt;td class="mon"&gt;16&lt;/td&gt;&lt;td class="tue"&gt;17&lt;/td&gt;&lt;td class="wed"&gt;18&lt;/td&gt;&lt;td class="thu"&gt;19&lt;/td&gt;&lt;td class="fri"&gt;20&lt;/td&gt;&lt;td class="sat"&gt;21&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="sun"&gt;22&lt;/td&gt;&lt;td class="mon"&gt;23&lt;/td&gt;&lt;td class="tue"&gt;24&lt;/td&gt;&lt;td class="wed"&gt;25&lt;/td&gt;&lt;td class="thu"&gt;26&lt;/td&gt;&lt;td class="fri"&gt;27&lt;/td&gt;&lt;td class="sat"&gt;28&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="sun"&gt;29&lt;/td&gt;&lt;td class="mon"&gt;30&lt;/td&gt;&lt;td class="tue"&gt;31&lt;/td&gt;&lt;td class="noday"&gt;&amp;nbsp;&lt;/td&gt;&lt;td class="noday"&gt;&amp;nbsp;&lt;/td&gt;&lt;td class="noday"&gt;&amp;nbsp;&lt;/td&gt;&lt;td class="noday"&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</pre>
</div>
<p>If you need to produce output in a format other than one of the available
defaults, you can use <a class="reference internal" href="#module-calendar" title="calendar: The calendar module implements classes for working with dates to manage year/month/week oriented values."><tt class="xref py py-mod docutils literal"><span class="pre">calendar</span></tt></a> to calculate the dates and organize
the values into week and month ranges, then iterate over the result yourself.
The weekheader(), monthcalendar(), and yeardays2calendar() methods of Calendar
are especially useful for that sort of work.</p>
<p>Calling yeardays2calendar() produces a sequence of &#8220;month row&#8221; lists. Each
list includes the months as another list of weeks. The weeks are lists of
tuples made up of day number (1-31) and weekday number (0-6). Days that fall
outside of the month have a day number of 0.</p>
<div class="highlight-python"><div class="highlight"><pre><span class="kn">import</span> <span class="nn">calendar</span>
<span class="kn">import</span> <span class="nn">pprint</span>

<span class="n">pprint</span><span class="o">.</span><span class="n">pprint</span><span class="p">(</span><span class="n">calendar</span><span class="o">.</span><span class="n">Calendar</span><span class="p">(</span><span class="n">calendar</span><span class="o">.</span><span class="n">SUNDAY</span><span class="p">)</span><span class="o">.</span><span class="n">yeardays2calendar</span><span class="p">(</span><span class="mi">2007</span><span class="p">,</span> <span class="mi">2</span><span class="p">))</span>
</pre></div>
</div>
<p>Calling yeardays2calendar(2007, 2) returns data for 2007, organized with 2
months per row.</p>
<div class="highlight-python"><pre>$ python calendar_yeardays2calendar.py

[[[[(0, 6), (1, 0), (2, 1), (3, 2), (4, 3), (5, 4), (6, 5)],
   [(7, 6), (8, 0), (9, 1), (10, 2), (11, 3), (12, 4), (13, 5)],
   [(14, 6), (15, 0), (16, 1), (17, 2), (18, 3), (19, 4), (20, 5)],
   [(21, 6), (22, 0), (23, 1), (24, 2), (25, 3), (26, 4), (27, 5)],
   [(28, 6), (29, 0), (30, 1), (31, 2), (0, 3), (0, 4), (0, 5)]],
  [[(0, 6), (0, 0), (0, 1), (0, 2), (1, 3), (2, 4), (3, 5)],
   [(4, 6), (5, 0), (6, 1), (7, 2), (8, 3), (9, 4), (10, 5)],
   [(11, 6), (12, 0), (13, 1), (14, 2), (15, 3), (16, 4), (17, 5)],
   [(18, 6), (19, 0), (20, 1), (21, 2), (22, 3), (23, 4), (24, 5)],
   [(25, 6), (26, 0), (27, 1), (28, 2), (0, 3), (0, 4), (0, 5)]]],
 [[[(0, 6), (0, 0), (0, 1), (0, 2), (1, 3), (2, 4), (3, 5)],
   [(4, 6), (5, 0), (6, 1), (7, 2), (8, 3), (9, 4), (10, 5)],
   [(11, 6), (12, 0), (13, 1), (14, 2), (15, 3), (16, 4), (17, 5)],
   [(18, 6), (19, 0), (20, 1), (21, 2), (22, 3), (23, 4), (24, 5)],
   [(25, 6), (26, 0), (27, 1), (28, 2), (29, 3), (30, 4), (31, 5)]],
  [[(1, 6), (2, 0), (3, 1), (4, 2), (5, 3), (6, 4), (7, 5)],
   [(8, 6), (9, 0), (10, 1), (11, 2), (12, 3), (13, 4), (14, 5)],
   [(15, 6), (16, 0), (17, 1), (18, 2), (19, 3), (20, 4), (21, 5)],
   [(22, 6), (23, 0), (24, 1), (25, 2), (26, 3), (27, 4), (28, 5)],
   [(29, 6), (30, 0), (0, 1), (0, 2), (0, 3), (0, 4), (0, 5)]]],
 [[[(0, 6), (0, 0), (1, 1), (2, 2), (3, 3), (4, 4), (5, 5)],
   [(6, 6), (7, 0), (8, 1), (9, 2), (10, 3), (11, 4), (12, 5)],
   [(13, 6), (14, 0), (15, 1), (16, 2), (17, 3), (18, 4), (19, 5)],
   [(20, 6), (21, 0), (22, 1), (23, 2), (24, 3), (25, 4), (26, 5)],
   [(27, 6), (28, 0), (29, 1), (30, 2), (31, 3), (0, 4), (0, 5)]],
  [[(0, 6), (0, 0), (0, 1), (0, 2), (0, 3), (1, 4), (2, 5)],
   [(3, 6), (4, 0), (5, 1), (6, 2), (7, 3), (8, 4), (9, 5)],
   [(10, 6), (11, 0), (12, 1), (13, 2), (14, 3), (15, 4), (16, 5)],
   [(17, 6), (18, 0), (19, 1), (20, 2), (21, 3), (22, 4), (23, 5)],
   [(24, 6), (25, 0), (26, 1), (27, 2), (28, 3), (29, 4), (30, 5)]]],
 [[[(1, 6), (2, 0), (3, 1), (4, 2), (5, 3), (6, 4), (7, 5)],
   [(8, 6), (9, 0), (10, 1), (11, 2), (12, 3), (13, 4), (14, 5)],
   [(15, 6), (16, 0), (17, 1), (18, 2), (19, 3), (20, 4), (21, 5)],
   [(22, 6), (23, 0), (24, 1), (25, 2), (26, 3), (27, 4), (28, 5)],
   [(29, 6), (30, 0), (31, 1), (0, 2), (0, 3), (0, 4), (0, 5)]],
  [[(0, 6), (0, 0), (0, 1), (1, 2), (2, 3), (3, 4), (4, 5)],
   [(5, 6), (6, 0), (7, 1), (8, 2), (9, 3), (10, 4), (11, 5)],
   [(12, 6), (13, 0), (14, 1), (15, 2), (16, 3), (17, 4), (18, 5)],
   [(19, 6), (20, 0), (21, 1), (22, 2), (23, 3), (24, 4), (25, 5)],
   [(26, 6), (27, 0), (28, 1), (29, 2), (30, 3), (31, 4), (0, 5)]]],
 [[[(0, 6), (0, 0), (0, 1), (0, 2), (0, 3), (0, 4), (1, 5)],
   [(2, 6), (3, 0), (4, 1), (5, 2), (6, 3), (7, 4), (8, 5)],
   [(9, 6), (10, 0), (11, 1), (12, 2), (13, 3), (14, 4), (15, 5)],
   [(16, 6), (17, 0), (18, 1), (19, 2), (20, 3), (21, 4), (22, 5)],
   [(23, 6), (24, 0), (25, 1), (26, 2), (27, 3), (28, 4), (29, 5)],
   [(30, 6), (0, 0), (0, 1), (0, 2), (0, 3), (0, 4), (0, 5)]],
  [[(0, 6), (1, 0), (2, 1), (3, 2), (4, 3), (5, 4), (6, 5)],
   [(7, 6), (8, 0), (9, 1), (10, 2), (11, 3), (12, 4), (13, 5)],
   [(14, 6), (15, 0), (16, 1), (17, 2), (18, 3), (19, 4), (20, 5)],
   [(21, 6), (22, 0), (23, 1), (24, 2), (25, 3), (26, 4), (27, 5)],
   [(28, 6), (29, 0), (30, 1), (31, 2), (0, 3), (0, 4), (0, 5)]]],
 [[[(0, 6), (0, 0), (0, 1), (0, 2), (1, 3), (2, 4), (3, 5)],
   [(4, 6), (5, 0), (6, 1), (7, 2), (8, 3), (9, 4), (10, 5)],
   [(11, 6), (12, 0), (13, 1), (14, 2), (15, 3), (16, 4), (17, 5)],
   [(18, 6), (19, 0), (20, 1), (21, 2), (22, 3), (23, 4), (24, 5)],
   [(25, 6), (26, 0), (27, 1), (28, 2), (29, 3), (30, 4), (0, 5)]],
  [[(0, 6), (0, 0), (0, 1), (0, 2), (0, 3), (0, 4), (1, 5)],
   [(2, 6), (3, 0), (4, 1), (5, 2), (6, 3), (7, 4), (8, 5)],
   [(9, 6), (10, 0), (11, 1), (12, 2), (13, 3), (14, 4), (15, 5)],
   [(16, 6), (17, 0), (18, 1), (19, 2), (20, 3), (21, 4), (22, 5)],
   [(23, 6), (24, 0), (25, 1), (26, 2), (27, 3), (28, 4), (29, 5)],
   [(30, 6), (31, 0), (0, 1), (0, 2), (0, 3), (0, 4), (0, 5)]]]]</pre>
</div>
<p>This is equivalent to the data used by formatyear()</p>
<div class="highlight-python"><div class="highlight"><pre><span class="kn">import</span> <span class="nn">calendar</span>

<span class="k">print</span> <span class="n">calendar</span><span class="o">.</span><span class="n">TextCalendar</span><span class="p">(</span><span class="n">calendar</span><span class="o">.</span><span class="n">SUNDAY</span><span class="p">)</span><span class="o">.</span><span class="n">formatyear</span><span class="p">(</span><span class="mi">2007</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">)</span>
</pre></div>
</div>
<p>which for the same arguments produces output like:</p>
<div class="highlight-python"><pre>$ python calendar_formatyear.py

                   2007

      January               February
Su Mo Tu We Th Fr Sa  Su Mo Tu We Th Fr Sa
    1  2  3  4  5  6               1  2  3
 7  8  9 10 11 12 13   4  5  6  7  8  9 10
14 15 16 17 18 19 20  11 12 13 14 15 16 17
21 22 23 24 25 26 27  18 19 20 21 22 23 24
28 29 30 31           25 26 27 28

       March                 April
Su Mo Tu We Th Fr Sa  Su Mo Tu We Th Fr Sa
             1  2  3   1  2  3  4  5  6  7
 4  5  6  7  8  9 10   8  9 10 11 12 13 14
11 12 13 14 15 16 17  15 16 17 18 19 20 21
18 19 20 21 22 23 24  22 23 24 25 26 27 28
25 26 27 28 29 30 31  29 30

        May                   June
Su Mo Tu We Th Fr Sa  Su Mo Tu We Th Fr Sa
       1  2  3  4  5                  1  2
 6  7  8  9 10 11 12   3  4  5  6  7  8  9
13 14 15 16 17 18 19  10 11 12 13 14 15 16
20 21 22 23 24 25 26  17 18 19 20 21 22 23
27 28 29 30 31        24 25 26 27 28 29 30

        July                 August
Su Mo Tu We Th Fr Sa  Su Mo Tu We Th Fr Sa
 1  2  3  4  5  6  7            1  2  3  4
 8  9 10 11 12 13 14   5  6  7  8  9 10 11
15 16 17 18 19 20 21  12 13 14 15 16 17 18
22 23 24 25 26 27 28  19 20 21 22 23 24 25
29 30 31              26 27 28 29 30 31

     September              October
Su Mo Tu We Th Fr Sa  Su Mo Tu We Th Fr Sa
                   1      1  2  3  4  5  6
 2  3  4  5  6  7  8   7  8  9 10 11 12 13
 9 10 11 12 13 14 15  14 15 16 17 18 19 20
16 17 18 19 20 21 22  21 22 23 24 25 26 27
23 24 25 26 27 28 29  28 29 30 31
30

      November              December
Su Mo Tu We Th Fr Sa  Su Mo Tu We Th Fr Sa
             1  2  3                     1
 4  5  6  7  8  9 10   2  3  4  5  6  7  8
11 12 13 14 15 16 17   9 10 11 12 13 14 15
18 19 20 21 22 23 24  16 17 18 19 20 21 22
25 26 27 28 29 30     23 24 25 26 27 28 29
                      30 31</pre>
</div>
<p>If you want to format the output yourself for some reason (such as including
links in HTML output), you will find the day_name, day_abbr, month_name, and
month_abbr module attributes useful. They are automatically configured
correctly for the current locale.</p>
</div>
<div class="section" id="calculating-dates">
<h2>Calculating Dates<a class="headerlink" href="#calculating-dates" title="Permalink to this headline">¶</a></h2>
<p>Although the calendar module focuses mostly on printing full calendars in
various formats, it also provides functions useful for working with dates in
other ways, such as calculating dates for a recurring event. For example, the
Python Atlanta User&#8217;s Group meets the 2nd Thursday of every month. To
calculate the dates for the meetings for a year, you could use the return
value of monthcalendar().</p>
<div class="highlight-python"><div class="highlight"><pre><span class="kn">import</span> <span class="nn">calendar</span>
<span class="kn">import</span> <span class="nn">pprint</span>

<span class="n">pprint</span><span class="o">.</span><span class="n">pprint</span><span class="p">(</span><span class="n">calendar</span><span class="o">.</span><span class="n">monthcalendar</span><span class="p">(</span><span class="mi">2007</span><span class="p">,</span> <span class="mi">7</span><span class="p">))</span>
</pre></div>
</div>
<p>Notice that some days are 0. Those are days of the week that overlap
with the given month but which are part of another month.</p>
<div class="highlight-python"><pre>$ python calendar_monthcalendar.py

[[0, 0, 0, 0, 0, 0, 1],
 [2, 3, 4, 5, 6, 7, 8],
 [9, 10, 11, 12, 13, 14, 15],
 [16, 17, 18, 19, 20, 21, 22],
 [23, 24, 25, 26, 27, 28, 29],
 [30, 31, 0, 0, 0, 0, 0]]</pre>
</div>
<p>As mentioned earlier, the first day of the week is Monday. It is possible
to change that by calling setfirstweekday(). On the other hand, since the
calendar module includes constants for indexing into the date ranges returned
by monthcalendar(), it is more convenient to skip that step in this case.</p>
<p>To calculate the PyATL meeting dates for 2007, assuming the second Thursday of
every month, we can use the 0 values to tell us whether the Thursday of the
first week is included in the month (or if the month starts, for example on a
Friday).</p>
<div class="highlight-python"><div class="highlight"><pre><span class="kn">import</span> <span class="nn">calendar</span>

<span class="c"># Show every month</span>
<span class="k">for</span> <span class="n">month</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="mi">13</span><span class="p">):</span>

    <span class="c"># Compute the dates for each week that overlaps the month</span>
    <span class="n">c</span> <span class="o">=</span> <span class="n">calendar</span><span class="o">.</span><span class="n">monthcalendar</span><span class="p">(</span><span class="mi">2007</span><span class="p">,</span> <span class="n">month</span><span class="p">)</span>
    <span class="n">first_week</span> <span class="o">=</span> <span class="n">c</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
    <span class="n">second_week</span> <span class="o">=</span> <span class="n">c</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span>
    <span class="n">third_week</span> <span class="o">=</span> <span class="n">c</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span>

    <span class="c"># If there is a Thursday in the first week, the second Thursday</span>
    <span class="c"># is in the second week.  Otherwise the second Thursday must </span>
    <span class="c"># be in the third week.</span>
    <span class="k">if</span> <span class="n">first_week</span><span class="p">[</span><span class="n">calendar</span><span class="o">.</span><span class="n">THURSDAY</span><span class="p">]:</span>
        <span class="n">meeting_date</span> <span class="o">=</span> <span class="n">second_week</span><span class="p">[</span><span class="n">calendar</span><span class="o">.</span><span class="n">THURSDAY</span><span class="p">]</span>
    <span class="k">else</span><span class="p">:</span>
        <span class="n">meeting_date</span> <span class="o">=</span> <span class="n">third_week</span><span class="p">[</span><span class="n">calendar</span><span class="o">.</span><span class="n">THURSDAY</span><span class="p">]</span>

    <span class="k">print</span> <span class="s">&#39;</span><span class="si">%3s</span><span class="s">: </span><span class="si">%2s</span><span class="s">&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="n">month</span><span class="p">,</span> <span class="n">meeting_date</span><span class="p">)</span>
</pre></div>
</div>
<p>So the PyATL meeting schedule for the year is:</p>
<div class="highlight-python"><pre>$ python calendar_secondthursday.py

  1: 11
  2:  8
  3:  8
  4: 12
  5: 10
  6: 14
  7: 12
  8:  9
  9: 13
 10: 11
 11:  8
 12: 13</pre>
</div>
<div class="admonition-see-also admonition seealso">
<p class="first admonition-title">See also</p>
<dl class="last docutils">
<dt><a class="reference external" href="http://docs.python.org/library/calendar.html">calendar</a></dt>
<dd>The standard library documentation for this module.</dd>
<dt><a class="reference internal" href="../time/index.html#module-time" title="time: Functions for manipulating clock time"><tt class="xref py py-mod docutils literal"><span class="pre">time</span></tt></a></dt>
<dd>Lower-level time functions.</dd>
<dt><a class="reference internal" href="../datetime/index.html#module-datetime" title="datetime: Date/time value manipulation."><tt class="xref py py-mod docutils literal"><span class="pre">datetime</span></tt></a></dt>
<dd>Manipulate date values, including timestamps and time zones.</dd>
</dl>
</div>
</div>
</div>


          </div>
        </div>
      </div>
      <div class="clearer"></div>
    </div>
    <div class="related">
      <h3>Navigation</h3>
      <ul>
        <li class="right" style="margin-right: 10px">
          <a href="../genindex.html" title="General Index"
             >index</a></li>
        <li class="right" >
          <a href="../py-modindex.html" title="Python Module Index"
             >modules</a> |</li>
        <li class="right" >
          <a href="../collections/index.html" title="collections – Container data types"
             >next</a> |</li>
        <li class="right" >
          <a href="../datetime/index.html" title="datetime – Date/time value manipulation"
             >previous</a> |</li>
        <li><a href="../contents.html">PyMOTW</a> &raquo;</li>
          <li><a href="../data_types.html" >Data Types</a> &raquo;</li> 
      </ul>
    </div>
    <div class="footer">
      &copy; Copyright Doug Hellmann.
      Last updated on Oct 24, 2010.
      Created using <a href="http://sphinx.pocoo.org/">Sphinx</a>.

    <br/><a href="http://creativecommons.org/licenses/by-nc-sa/3.0/us/" rel="license"><img alt="Creative Commons License" style="border-width:0" src="http://i.creativecommons.org/l/by-nc-sa/3.0/us/88x31.png"/></a>
    
    </div>
  </body>
</html>

[top] / python / PyMOTW / docs / calendar / index.html

contact | logmethods.com