How to find the day of the week on any given date in Python

1 Answer

0 votes
# Zeller's Congruence implementation
# Returns the day of the week for a given date.
def dayOfWeek(d, m, y):

    # Zeller's output mapping:
    # 0 = Saturday, 1 = Sunday, 2 = Monday, ... 6 = Friday
    names = [
        "Saturday", "Sunday", "Monday", "Tuesday",
        "Wednesday", "Thursday", "Friday"
    ]

    # In Zeller's formula, January and February are counted
    # as months 13 and 14 of the previous year.
    if m < 3:
        m += 12    # Convert Jan → 13, Feb → 14
        y -= 1     # Move to previous year

    K = y % 100        # Year of the century (last two digits)
    J = y // 100       # Zero-based century (e.g., 2024 → 20)

    # Zeller's formula (clearer step-by-step version):

    term1 = d                      # day of month
    term2 = (13 * (m + 1)) // 5    # month adjustment
    term3 = K                      # year of century
    term4 = K // 4                 # leap years in century
    term5 = J // 4                 # leap centuries
    term6 = 5 * J                  # century correction

    # Combine all terms and take modulo 7
    h = (term1 + term2 + term3 + term4 + term5 + term6) % 7

    # Return the corresponding weekday name
    return names[h]


d, m, y = 30, 5, 2024

print(dayOfWeek(d, m, y))



"""
run:

Thursday

"""

 



answered 9 hours ago by avibootz
edited 9 hours ago by avibootz
...