Explain Codes LogoExplain Codes Logo

Python date of the previous month

python
date-manipulation
datetime
dateutil
Alex KataevbyAlex Kataev·Mar 3, 2025
TLDR

To grab the last month's date, we turn to the dynamic duo of datetime and relativedelta. Subtract one month using relativedelta(months=-1). Here's how to determine the same day of the previous month:

from datetime import datetime from dateutil.relativedelta import relativedelta # My time machine, it's called Python previous_month_date = datetime.now() + relativedelta(months=-1) print(previous_month_date.strftime('%Y-%m-%d')) # Flashback successful!

If you're after the last day of the yearned month:

# Last day of the previous month - Nothing sneaky going on here! last_day_prev_month = (datetime.now().replace(day=1) - relativedelta(days=1)).strftime('%Y-%m-%d') print(last_day_prev_month)

Remember, you can replace datetime.now() with your desired date, if needed.

How does it work?

Quick ride through datetime

The key to mastering date manipulation in Python is getting a handle on datetime. By wielding the replace(day=1) method, we can smoothly sail from any day to the first day of the corresponding month. Using timedelta(days=1), akin to flicking a Time-Turner once, we jump back to the previous month's end.

Beautify your date

Your dates deserve to look good. The strftime('%Y-%m-%d') function is the stylist that turns your date from "meh" to "whoa!". It arranges your dates in the comprehensible YYYY-MM-DD style.

dateutil.relativedelta: timedelta's big brother

When you're dealing with complex date adjustments, dateutil.relativedelta steps in as an untapped heavyweight. Managing month-end peculiarities or drawing back to the exact date in the previous month is a piece of cake.

Dodge danger, harness libraries

Avert the chaos of manual if-else scripts. Leverage strong built-in library functions for your date calculations. Always opt for refactoring and simplification with tools like replace and relativedelta. And remember, when in doubt, hit the books (official documentation)!

Date-time travel made easy

Consider each datetime operation as a precise step in a well-orchestrated dance with time.

Decoding replace(day=1) and timedelta(days=1)

Changing the day to one (replace(day=1)) coupled with stepping back a day (timedelta(days=1)) is akin to gently browsing a calendar, flipping back to the previous month's end.

Pretty dates with strftime()

Just like an exquisitely designed calendar, consistently formatted dates (strftime()) foster better data appreciation and easy tracking.