w3resource

Python Calendar Module

Python Calendar

This module allows you to output calendars like the Unix cal program and provides additional useful functions related to the calendar. By default, these calendars have Monday as the first day of the week, and Sunday as the last (the European convention). Use setfirstweekday() to set the first day of the week to Sunday (6) or to any other weekday. Parameters that specify dates are given as integers. For related functionality, see also the datetime and time modules.

Calender:

Name Description
iterweekdays() method Return an iterator for the weekdays numbers that will be used for one week.
itermonthdates() method The itermonthdates() method is used to return an iterator for the month month (1-12) in the year year.
itermonthdays2() method The itermonthdays2() method is used to return an iterator for the month month in the year year similar to itermonthdates().
itermonthdays() method The itermonthdays() method is used to return an iterator for the month month in the year year similar to itermonthdates().
monthdatescalendar() method The monthdatescalendar() method is used to return a list of the weeks in the month month of the year as full weeks. Weeks are lists of seven datetime.date objects.
monthdays2calendar() method The monthdays2calendar() method is used to return a list of the weeks in the month month of the year as full weeks. Weeks are lists of seven tuples of day numbers and weekday numbers.
monthdayscalendar() method The monthdayscalendar() method is used to return a list of the weeks in the month month of the year as full weeks. Weeks are lists of seven day numbers.
yeardatescalendar() method The yeardatescalendar() method is used to return the data for the specified year ready for formatting. The return value is a list of month rows.
yeardays2calendar() method The yeardays2calendar() method is used to return the data for the specified year ready for formatting (similar to yeardatescalendar()).
yeardayscalendar() method The yeardayscalendar() method is used to return the data for the specified year ready for formatting (similar to yeardatescalendar())
text-calendar-formatmonth() method The formatmonth() method is used to return a month’s calendar in a multi-line string.
text-calendar-prmonth() method The prmonth() method is used to Print a month’s calendar as returned by formatmonth().
text-calendar-formatyear() method The formatyear() method is used to return a m-column calendar for an entire year as a multi-line string.
text-calendar-pryear() method The pryear() method is used to Print the calendar for an entire year as returned by formatyear().
html-calendar-formatmonth() method The formatmonth() method is used to return a month’s calendar as an HTML table.
html-calendar-formatyear()method The formatyear() method is used to return a year’s calendar as an HTML table.
html-calendar-formatyearpage() method The formatyearpage() method is used to return a year’s calendar as a complete HTML page.
setfirstweekday() method Sets the weekday (0 is Monday, 6 is Sunday) to start each week.
firstweekday() method The firstweekday() method is used to returns the current setting for the weekday to start each week.
isleap() method The isleap() method is used to returns True if year is a leap year, otherwise False.
leapdays() method The leapdays() method is used to returns the number of leap years in the range from y1 to y2 (exclusive), where y1 and y2 are years.
weekday() method The weekday() method is used to returns the day of the week (0 is Monday) for year (1970–...), month (1–12), day (1–31).
weekheader() method The weekheader() method is used to return a header containing abbreviated weekday names. n specifies the width in characters for one weekday.
monthrange() method The monthrange() method is used to returns weekday of first day of the month and number of days in month, for the specified year and month.
monthcalendar() method The monthrange() method is used to returns a matrix representing a month’s calendar.
prmonth() method The prmonth() method is used to prints a month’s calendar as returned by month().
month() method The month() method is used to returns a month’s calendar in a multi-line string using the formatmonth() of the TextCalendar class.
prcal() method The prcal() method is used to prints the calendar for an entire year as returned by calendar().
calendar() method The calendar() method is used to returns a 3-column calendar for an entire year as a multi-line string using the formatyear() of the TextCalendar class.

Previous: Python Module
Next: Python Calendar Module iterweekdays()

Test your Python skills with w3resource's quiz



Python: Tips of the Day

Find the index of an item in a list?

Given a list ["foo", "bar", "baz"] and an item in the list "bar", how do I get its index (1) in Python?

>>> ["foo", "bar", "baz"].index("bar")
1

Caveats follow

Note that while this is perhaps the cleanest way to answer the question as asked, index is a rather weak component of the list API, and I can't remember the last time I used it in anger. It's been pointed out to me in the comments that because this answer is heavily referenced, it should be made more complete. Some caveats about list.index follow. It is probably worth initially taking a look at the documentation for it:

list.index(x[, start[, end]])

Linear time-complexity in list length

An index call checks every element of the list in order, until it finds a match. If your list is long, and you don't know roughly where in the list it occurs, this search could become a bottleneck. In that case, you should consider a different data structure. Note that if you know roughly where to find the match, you can give index a hint. For instance, in this snippet, l.index(999_999, 999_990, 1_000_000) is roughly five orders of magnitude faster than straight l.index(999_999), because the former only has to search 10 entries, while the latter searches a million:

>>> import timeit
>>> timeit.timeit('l.index(999_999)', setup='l = list(range(0, 1_000_000))', number=1000)
9.356267921015387
>>> timeit.timeit('l.index(999_999, 999_990, 1_000_000)', setup='l = list(range(0, 1_000_000))', number=1000)
0.0004404920036904514

Only returns the index of the first match to its argument

A call to index searches through the list in order until it finds a match, and stops there. If you expect to need indices of more matches, you should use a list comprehension, or generator expression.

>>> [1, 1].index(1)
0
>>> [i for i, e in enumerate([1, 2, 1]) if e == 1]
[0, 2]
>>> g = (i for i, e in enumerate([1, 2, 1]) if e == 1)
>>> next(g)
0
>>> next(g)
2

Most places where I once would have used index, I now use a list comprehension or generator expression because they're more generalizable. So if you're considering reaching for index, take a look at these excellent Python features.

Throws if element not present in list

A call to index results in a ValueError if the item's not present.

>>> [1, 1].index(2)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: 2 is not in list

If the item might not be present in the list, you should either

  • Check for it first with item in my_list (clean, readable approach), or
  • Wrap the index call in a try/except block which catches ValueError (probably faster, at least when the list to search is long, and the item is usually present.)

Ref: https://bit.ly/2ALwXwe