18. Working with Dates and Times in Python
Introduction to Dates and Times
Handling dates and times is essential in many applications—logging events, scheduling tasks, or tracking user activity. Python’s built-in modules like `datetime`, `time`, and `calendar` make this easy and consistent across platforms.
Using the datetime Module
The `datetime` module provides classes for manipulating dates and times. The most commonly used classes are `datetime`, `date`, and `time`.
from datetime import datetime, date, time
# Current date and time
now = datetime.now()
print(now)
# Current date only
today = date.today()
print(today)
# Create a specific time
t = time(14, 30, 0)
print(t)Formatting Dates and Times
Use `strftime` to convert date/time objects to readable strings, and `strptime` to parse strings into date/time objects.
now = datetime.now()
print(now.strftime("%Y-%m-%d %H:%M:%S")) # Format datetime
# Parsing a date string
date_str = '2025-10-21 13:45'
dt = datetime.strptime(date_str, '%Y-%m-%d %H:%M')
print(dt)Date and Time Arithmetic
You can perform arithmetic with `datetime` objects using `timedelta`.
from datetime import timedelta
now = datetime.now()
week_later = now + timedelta(weeks=1)
print(week_later)
# Difference between two dates
delta = week_later - now
print(delta.days, 'days')Using the time Module
The `time` module is helpful for timestamp operations and delays.
import time
# Current timestamp
timestamp = time.time()
print(timestamp)
# Delay execution
print("Waiting 2 seconds...")
time.sleep(2)
print("Done!")Using the calendar Module
The `calendar` module allows you to work with calendar-related data and generate calendars.
import calendar
# Print a month calendar
print(calendar.month(2025, 10))
# Check if a year is a leap year
print(calendar.isleap(2024))Best Practices and Common Pitfalls
- Use `datetime` over `time` for high-level date/time manipulation.
- Always be careful with time zones; `datetime` objects can be timezone-aware using `pytz` or `zoneinfo`.
- Prefer `timedelta` for date arithmetic instead of manually calculating days or seconds.
- When parsing user input, always validate date formats to avoid exceptions.
Python Date and Time Documentation
Mini Project Step
Enhance your Calculator project to log every calculation with a timestamp using `datetime`. Optionally, create a function that shows how many days have passed since a given date.