π· Introduction Handling dates and time is essential in many real-world applications such as scheduling systems, logs, data analysis, and APIs.
Python provides a powerful built-in module called datetime to work with dates and time efficiently.
In this lesson, you will learn:
β How to create and manipulate dates β How to format and parse date strings β How to perform time calculations β How to work with durations using timedelta
π© 1. The datetime Module πΉ Importing from datetime import datetimeπΉ Get current date and time now = datetime.now()
print(now)πΉ Get only the date print(now.date())πΉ Get only the time print(now.time())π© 2. Creating Custom Dates from datetime import datetime
d = datetime(2025, 1, 15, 10, 30)
print(d)β Format: datetime(year, month, day, hour, minute)
π© 3. Formatting Dates ( strftime ) Convert date β string:
now = datetime.now()
print(now.strftime("%Y-%m-%d"))
print(now.strftime("%d/%m/%Y"))
print(now.strftime("%H:%M:%S"))πΉ Common format codes Code Meaning %Y Year %m Month %d Day %H Hour %M Minute %S Second
π© 4. Parsing Dates ( strptime ) Convert string β date:
from datetime import datetime
date_str = "2025-01-15"
date_obj = datetime.strptime(date_str, "%Y-%m-%d")
print(date_obj)π© 5. Time Calculations ( timedelta ) πΉ Adding time from datetime import timedelta
now = datetime.now()
future = now + timedelta(days=7)
print(future)πΉ Subtracting dates past = datetime(2024, 1, 1)
diff = now - past
print(diff.days)π© 6. Practical Examples πΉ Calculate age birth = datetime(2000, 5, 10)
today = datetime.now()
age = today.year - birth.year
print("Age:", age)πΉ Check if a date is in the future event = datetime(2025, 12, 31)
if event > datetime.now():
print("Event is upcoming")π§ 7. Exercises (Hidden Solutions) Exercise 1 β Print current date
Show solution
from datetime import datetime
print(datetime.now())
Exercise 2 β Format todayβs date
Show solution
from datetime import datetime
print(datetime.now().strftime("%d/%m/%Y"))
Exercise 3 β Parse a date string
Show solution
from datetime import datetime
d = datetime.strptime("2025-05-10", "%Y-%m-%d")
print(d)
Exercise 4 β Add 10 days to today
Show solution
from datetime import datetime, timedelta
print(datetime.now() + timedelta(days=10))
Exercise 5 β Calculate difference between two dates
Show solution
from datetime import datetime
d1 = datetime(2025, 1, 1)
d2 = datetime(2024, 1, 1)
print((d1 - d2).days)
π¦ Conclusion In this lesson, you learned how to:
β Work with dates and time using datetime β Format and parse date strings β Perform time calculations β Handle real-world date scenarios
These skills are widely used in:
APIs Data analysis Logging systems Scheduling applications π Mini Project β Event Scheduler & Countdown App Project idea Build a Python program that lets the user:
enter an event name enter an event date calculate how many days remain until the event show whether the event is in the future, today, or already passed This project is perfect for practicing:
datetimestrptime()strftime()date comparison timedeltaπ§© What the app does Example:
Enter event name: Python Exam
Enter event date (YYYY-MM-DD): 2026-12-20Output:
Event: Python Exam
Date: 20/12/2026
Days remaining: 45If the date is today:
The event is today!If the date is in the past:
This event has already passed.β
Full Solution
Show solution
from datetime import datetime
event_name = input("Enter event name: ")
event_date_str = input("Enter event date (YYYY-MM-DD): ")
try:
event_date = datetime.strptime(event_date_str, "%Y-%m-%d").date()
today = datetime.now().date()
difference = event_date - today
days_left = difference.days
print("\nEvent:", event_name)
print("Date:", event_date.strftime("%d/%m/%Y"))
if days_left > 0:
print("Days remaining:", days_left)
elif days_left == 0:
print("The event is today!")
else:
print("This event has already passed.")
except ValueError:
print("Invalid date format. Please use YYYY-MM-DD.")π Explanation 1. Read user input event_name = input("Enter event name: ")
event_date_str = input("Enter event date (YYYY-MM-DD): ")The user enters:
the event title the date as text 2. Convert string to date event_date = datetime.strptime(event_date_str, "%Y-%m-%d").date()This transforms "2026-12-20" into a real Python date object.
3. Get today's date today = datetime.now().date()4. Calculate difference difference = event_date - today
days_left = difference.daysThis gives the number of days between today and the event.
5. Display the result If days_left > 0 β upcoming event If days_left == 0 β event is today If days_left < 0 β event already passed
π§ Skills practiced With this mini project, you practice:
parsing dates with strptime() formatting dates with strftime() comparing dates using timedelta indirectly through date subtraction handling invalid input with try/except π Improved Version β Multiple Events Here is a slightly more advanced version that stores several events in a list.
Show solution
from datetime import datetime
events = []
while True:
name = input("\nEnter event name (or type 'stop' to finish): ")
if name.lower() == "stop":
break
date_str = input("Enter event date (YYYY-MM-DD): ")
try:
event_date = datetime.strptime(date_str, "%Y-%m-%d").date()
events.append((name, event_date))
except ValueError:
print("Invalid date format. Please use YYYY-MM-DD.")
today = datetime.now().date()
print("\n=== Event Schedule ===")
for name, event_date in events:
days_left = (event_date - today).days
print(f"\nEvent: {name}")
print("Date:", event_date.strftime("%d/%m/%Y"))
if days_left > 0:
print("Days remaining:", days_left)
elif days_left == 0:
print("The event is today!")
else:
print("This event has already passed.")
π― Challenge ideas You can extend the project with:
sort events by nearest date save events to a file show only future events add event time create a GUI version with Tkinter highlight the nearest upcoming event