Year name to century name and decade name in Python

Here are some little helper functions to convert an integer year into a century name and decade name, for example 1989 would be "20th Century" and "1980s".

from math import floor

def year_to_century_name(year: int) -> str:
    century = (floor(int(year) / 100)) + 1
    suffix = ordinal_suffix(century)
    return f"{century}{suffix} Century"


def ordinal_suffix(num: int) -> str:
    return {1: "st", 2: "nd", 3: "rd"}.get(
        0 if 10 > num > 14 else num % 10, "th"
    )


def year_to_decade_name(year: int) -> str:
    decade = floor(int(year) / 10) * 10
    return f"{decade}s"

We use this in Moment Wall Art to extract the century and decade of each piece, which allows for easy taxonomy pages like 20th Century Wall Art or 2020s Wall Art.


Tech mentioned