blob: 222e2dbbb9e29770b4d119bd5978853783716fdd [file] [log] [blame]
Fred Drake295da241998-08-10 19:42:37 +00001\section{\module{calendar} ---
Fred Drake38e5d272000-04-03 20:13:55 +00002 General calendar-related functions}
3
Fred Drakeb91e9341998-07-23 17:59:49 +00004\declaremodule{standard}{calendar}
Fred Drake1a670c82001-11-06 22:14:35 +00005\modulesynopsis{Functions for working with calendars,
Fred Drakec116b822001-05-09 15:50:17 +00006 including some emulation of the \UNIX\ \program{cal}
Fred Drake38e5d272000-04-03 20:13:55 +00007 program.}
8\sectionauthor{Drew Csillag}{drew_csillag@geocities.com}
Fred Drake1c127e71998-04-28 14:28:57 +00009
10This module allows you to output calendars like the \UNIX{}
Fred Drake38e5d272000-04-03 20:13:55 +000011\program{cal} program, and provides additional useful functions
Skip Montanaro7b828a62000-08-30 14:02:25 +000012related to the calendar. By default, these calendars have Monday as
13the first day of the week, and Sunday as the last (the European
14convention). Use \function{setfirstweekday()} to set the first day of the
Fred Drake1529ef82001-12-12 05:40:46 +000015week to Sunday (6) or to any other weekday. Parameters that specify
16dates are given as integers.
Skip Montanaro7b828a62000-08-30 14:02:25 +000017
Neal Norwitz034c7492002-11-03 00:13:42 +000018Most of these functions rely on the platform provided \function{mktime()}.
19Therefore, valid argument values may vary from system to system.
20On Unix, valid years are typically between \code{1970} and \code{2037},
21but may be work between \code{1902} and \code{2037}.
22
Skip Montanaro7b828a62000-08-30 14:02:25 +000023\begin{funcdesc}{setfirstweekday}{weekday}
24Sets the weekday (\code{0} is Monday, \code{6} is Sunday) to start
25each week. The values \constant{MONDAY}, \constant{TUESDAY},
26\constant{WEDNESDAY}, \constant{THURSDAY}, \constant{FRIDAY},
27\constant{SATURDAY}, and \constant{SUNDAY} are provided for
28convenience. For example, to set the first weekday to Sunday:
29
30\begin{verbatim}
31import calendar
32calendar.setfirstweekday(calendar.SUNDAY)
33\end{verbatim}
Fred Drakee9996c62002-06-13 01:34:50 +000034\versionadded{2.0}
Skip Montanaro7b828a62000-08-30 14:02:25 +000035\end{funcdesc}
36
37\begin{funcdesc}{firstweekday}{}
38Returns the current setting for the weekday to start each week.
Fred Drakee9996c62002-06-13 01:34:50 +000039\versionadded{2.0}
Skip Montanaro7b828a62000-08-30 14:02:25 +000040\end{funcdesc}
Fred Drake1c127e71998-04-28 14:28:57 +000041
42\begin{funcdesc}{isleap}{year}
Fred Drake1529ef82001-12-12 05:40:46 +000043Returns \code{1} if \var{year} is a leap year, otherwise \code{0}.
Fred Drake1c127e71998-04-28 14:28:57 +000044\end{funcdesc}
45
Skip Montanaro7b828a62000-08-30 14:02:25 +000046\begin{funcdesc}{leapdays}{y1, y2}
47Returns the number of leap years in the range
Fred Drake1529ef82001-12-12 05:40:46 +000048[\var{y1}\ldots\var{y2}), where \var{y1} and \var{y2} are years.
Fred Drakee9996c62002-06-13 01:34:50 +000049\versionchanged[This function didn't work for ranges spanning
50 a century change in Python 1.5.2]{2.0}
Fred Drake1c127e71998-04-28 14:28:57 +000051\end{funcdesc}
52
53\begin{funcdesc}{weekday}{year, month, day}
54Returns the day of the week (\code{0} is Monday) for \var{year}
Fred Drake02379fa1998-05-08 15:39:40 +000055(\code{1970}--\ldots), \var{month} (\code{1}--\code{12}), \var{day}
Fred Drake1c127e71998-04-28 14:28:57 +000056(\code{1}--\code{31}).
57\end{funcdesc}
58
59\begin{funcdesc}{monthrange}{year, month}
60Returns weekday of first day of the month and number of days in month,
61for the specified \var{year} and \var{month}.
62\end{funcdesc}
63
64\begin{funcdesc}{monthcalendar}{year, month}
65Returns a matrix representing a month's calendar. Each row represents
66a week; days outside of the month a represented by zeros.
Skip Montanaro7b828a62000-08-30 14:02:25 +000067Each week begins with Monday unless set by \function{setfirstweekday()}.
Fred Drake1c127e71998-04-28 14:28:57 +000068\end{funcdesc}
69
Skip Montanaro7b828a62000-08-30 14:02:25 +000070\begin{funcdesc}{prmonth}{theyear, themonth\optional{, w\optional{, l}}}
71Prints a month's calendar as returned by \function{month()}.
Fred Drake1c127e71998-04-28 14:28:57 +000072\end{funcdesc}
73
Skip Montanaro7b828a62000-08-30 14:02:25 +000074\begin{funcdesc}{month}{theyear, themonth\optional{, w\optional{, l}}}
75Returns a month's calendar in a multi-line string. If \var{w} is
76provided, it specifies the width of the date columns, which are
77centered. If \var{l} is given, it specifies the number of lines that
78each week will use. Depends on the first weekday as set by
79\function{setfirstweekday()}.
Fred Drakee9996c62002-06-13 01:34:50 +000080\versionadded{2.0}
Skip Montanaro7b828a62000-08-30 14:02:25 +000081\end{funcdesc}
82
83\begin{funcdesc}{prcal}{year\optional{, w\optional{, l\optional{c}}}}
84Prints the calendar for an entire year as returned by
85\function{calendar()}.
86\end{funcdesc}
87
88\begin{funcdesc}{calendar}{year\optional{, w\optional{, l\optional{c}}}}
89Returns a 3-column calendar for an entire year as a multi-line string.
90Optional parameters \var{w}, \var{l}, and \var{c} are for date column
91width, lines per week, and number of spaces between month columns,
92respectively. Depends on the first weekday as set by
Skip Montanaro5ff41d12001-08-22 12:43:38 +000093\function{setfirstweekday()}. The earliest year for which a calendar can
94be generated is platform-dependent.
Fred Drakee9996c62002-06-13 01:34:50 +000095\versionadded{2.0}
Fred Drake1c127e71998-04-28 14:28:57 +000096\end{funcdesc}
Guido van Rossum47274561999-06-09 15:11:58 +000097
98\begin{funcdesc}{timegm}{tuple}
Fred Drake38e5d272000-04-03 20:13:55 +000099An unrelated but handy function that takes a time tuple such as
100returned by the \function{gmtime()} function in the \refmodule{time}
Fred Drakec37b65e2001-11-28 07:26:15 +0000101module, and returns the corresponding \UNIX{} timestamp value, assuming
Guido van Rossum47274561999-06-09 15:11:58 +0000102an epoch of 1970, and the POSIX encoding. In fact,
Fred Drake38e5d272000-04-03 20:13:55 +0000103\function{time.gmtime()} and \function{timegm()} are each others' inverse.
Fred Drakee9996c62002-06-13 01:34:50 +0000104\versionadded{2.0}
Guido van Rossum47274561999-06-09 15:11:58 +0000105\end{funcdesc}
Fred Drake38e5d272000-04-03 20:13:55 +0000106
107
108\begin{seealso}
109 \seemodule{time}{Low-level time related functions.}
110\end{seealso}