Skip to content

Formatting (strftime) and Parsing (strptime)

strftime() formats datetime objects as strings, while strptime() parses strings into datetime objects.

strftime - Format Datetime to String

Use format codes to create human-readable date strings.

from datetime import datetime

now = datetime(2024, 12, 25, 14, 30, 45)

# Common format codes
formats = {
    "%Y-%m-%d": now.strftime("%Y-%m-%d"),
    "%d/%m/%Y": now.strftime("%d/%m/%Y"),
    "%A, %B %d, %Y": now.strftime("%A, %B %d, %Y"),
    "%I:%M %p": now.strftime("%I:%M %p"),
    "%H:%M:%S": now.strftime("%H:%M:%S"),
}

for pattern, result in formats.items():
    print(f"{pattern}: {result}")
%Y-%m-%d: 2024-12-25
%d/%m/%Y: 25/12/2024
%A, %B %d, %Y: Wednesday, December 25, 2024
%I:%M %p: 02:30 PM
%H:%M:%S: 14:30:45

strptime - Parse String to Datetime

Parse date strings using format codes.

from datetime import datetime

# Parse various date formats
dates = [
    ("2024-12-25", "%Y-%m-%d"),
    ("25/12/2024", "%d/%m/%Y"),
    ("December 25, 2024", "%B %d, %Y"),
    ("02:30 PM", "%I:%M %p"),
]

for date_str, fmt in dates:
    parsed = datetime.strptime(date_str, fmt)
    print(f"'{date_str}' -> {parsed}")
'2024-12-25' -> 2024-12-25 00:00:00
'25/12/2024' -> 2024-12-25 00:00:00
'December 25, 2024' -> 2024-12-25 00:00:00
'02:30 PM' -> 1900-01-01 14:30:00