Dates And Times In Python: A Comprehensive Datetime Tutorial

Working with dates and times is a common task in many programming scenarios, and Python provides a powerful module called datetime to handle these operations.

In this comprehensive tutorial, we will explore the datetime module in Python, covering various aspects of working with dates, times, and timedelta.

Importing the datetime Module:

To get started, you need to import the datetime module:

from datetime import datetime, date, time, timedelta

The datetime module includes several classes that we'll explore in this tutorial: datetime, date, time, and timedelta.

1. Working with Dates:

1.1. Creating a Date Object:

today =
print("Today's date:", today)

This creates a date object representing the current date.

1.2. Creating a Date Object for a Specific Date:

specific_date = date(2022, 5, 15)
print("Specific date:", specific_date)

This creates a date object for the specified year, month, and day.

2. Working with Times:

2.1. Creating a Time Object:

current_time =
print("Current time:", current_time)

This creates a time object representing the current time.

2.2. Creating a Time Object for a Specific Time:

specific_time = time(12, 30, 0)
print("Specific time:", specific_time)

This creates a time object for the specified hour, minute, and second.

3. Working with Date and Time Combined:

3.1. Creating a DateTime Object:

current_datetime =
print("Current date and time:", current_datetime)

This creates a datetime object representing the current date and time.

3.2. Creating a DateTime Object for a Specific Date and Time:

specific_datetime = datetime(2022, 5, 15, 12, 30, 0)
print("Specific date and time:", specific_datetime)

This creates a datetime object for the specified year, month, day, hour, minute, and second.

4. Formatting and Parsing Dates and Times:

4.1. Formatting Dates and Times:

formatted_date = today.strftime("%Y-%m-%d")
formatted_time = current_time.strftime("%H:%M:%S")
formatted_datetime = current_datetime.strftime("%Y-%m-%d %H:%M:%S")

print("Formatted date:", formatted_date)
print("Formatted time:", formatted_time)
print("Formatted date and time:", formatted_datetime)

This uses the strftime method to format dates and times as strings.

4.2. Parsing Strings to Create Date and Time Objects:

date_string = "2022-05-15"
parsed_date = datetime.strptime(date_string, "%Y-%m-%d").date()

time_string = "12:30:00"
parsed_time = datetime.strptime(time_string, "%H:%M:%S").time()

datetime_string = "2022-05-15 12:30:00"
parsed_datetime = datetime.strptime(datetime_string, "%Y-%m-%d %H:%M:%S")

print("Parsed date:", parsed_date)
print("Parsed time:", parsed_time)
print("Parsed date and time:", parsed_datetime)

This uses the strptime method to parse strings and create date, time, or datetime objects.

5. Performing Arithmetic with Dates and Times:

5.1. Calculating the Difference Between Dates:

date_difference = specific_date - today
print("Date difference:", date_difference)

This calculates the difference between two date objects, resulting in a timedelta object.

5.2. Adding or Subtracting Time Using Timedelta:

one_week_later = today + timedelta(weeks=1)
three_days_ago = today - timedelta(days=3)
print("One week later:", one_week_later)
print("Three days ago:", three_days_ago)

This uses the timedelta class to add or subtract a specific duration from a date object.


The datetime module in Python provides a robust set of tools for working with dates and times.

Whether you need to represent the current date and time, create specific date and time objects, format and parse date/time strings, or perform arithmetic with dates and times, the datetime module has you covered.

Incorporate these techniques into your Python projects, and you'll be well-equipped to handle a wide range of date and time-related tasks efficiently.