Python calendar module : monthdays2calendar() method

The Python calendar module provides various methods for working with dates and calendars. The monthdays2calendar() method is particularly useful for generating structured calendar layouts that include both day numbers and their corresponding weekday information.

What is monthdays2calendar()?

The monthdays2calendar() method returns a matrix representing a month's calendar where each day is paired with its weekday number. Unlike monthcalendar() which returns only day numbers, this method provides tuples of (day, weekday) for each position in the calendar grid.

Syntax

calendar.Calendar().monthdays2calendar(year, month)

Parameters

  • year ? The year as a four-digit integer

  • month ? The month as an integer from 1 to 12

Return Value

Returns a list of weeks, where each week is a list of tuples. Each tuple contains (day, weekday) where:

  • day ? Day of the month (0 for days outside the month)

  • weekday ? Weekday number (0=Monday, 1=Tuesday, ..., 6=Sunday)

Basic Example

import calendar

# Create calendar object
cal = calendar.Calendar()

# Get August 2023 calendar with day-weekday pairs
month_layout = cal.monthdays2calendar(2023, 8)

print("Calendar for August 2023:")
for week in month_layout:
    print(week)
Calendar for August 2023:
[(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)]

Formatted Calendar Display

import calendar

# Create calendar object
cal = calendar.Calendar()

# Get calendar layout for December 2023
year, month = 2023, 12
month_layout = cal.monthdays2calendar(year, month)

# Display formatted calendar
weekdays = ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"]
print(f"Calendar for {calendar.month_name[month]} {year}")
print("-" * 28)
print("  ".join(weekdays))

for week in month_layout:
    row = []
    for day, weekday in week:
        if day == 0:
            row.append("  ")  # Empty space for adjacent month days
        else:
            row.append(f"{day:2d}")
    print("  ".join(row))
Calendar for December 2023
----------------------------
Mon  Tue  Wed  Thu  Fri  Sat  Sun
     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

Finding Specific Weekdays

import calendar

def find_fridays(year, month):
    """Find all Fridays in a given month"""
    cal = calendar.Calendar()
    month_layout = cal.monthdays2calendar(year, month)
    
    fridays = []
    for week in month_layout:
        for day, weekday in week:
            if day != 0 and weekday == 4:  # Friday is weekday 4
                fridays.append(day)
    
    return fridays

# Find all Fridays in October 2023
fridays = find_fridays(2023, 10)
print(f"Fridays in October 2023: {fridays}")
Fridays in October 2023: [6, 13, 20, 27]

Comparison with monthcalendar()

Method Returns Use Case
monthcalendar() Day numbers only Simple calendar display
monthdays2calendar() Day-weekday tuples Weekday-aware processing

Common Use Cases

  • Event Planning ? Identify specific weekdays for scheduling recurring events

  • Business Applications ? Calculate working days or weekend dates

  • Calendar Widgets ? Build interactive calendar interfaces with weekday information

  • Data Analysis ? Analyze patterns based on days of the week

Conclusion

The monthdays2calendar() method provides a powerful way to work with calendar data by combining day numbers with weekday information. This makes it ideal for applications that need to process calendars based on specific weekdays or create detailed calendar visualizations.

Updated on: 2026-03-27T15:53:29+05:30

383 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements