PYTHON

Python datetime: Working with Date and Time in Python

The Python datetime module provides powerful tools for working with dates, times, and time intervals, including formatting and manipulation.

How to Use the Python datetime Module

To work with dates and times in Python, you need to import the datetime module. The Python date and time module provides several classes for formatting and manipulating date and time values.

from datetime import datetime

# Get the current date and time
now = datetime.now()

print(now)  # Outputs: 2024-09-19 12:34:56.789123
  • datetime: The module name and main class for working with date and time values.
  • date: Represents a date (year, month, and day) without a time component.
  • time: Represents a time (hours, minutes, seconds, and microseconds) without a date component.
  • timedelta: Represents a duration or the difference between two dates or times.

When to Use Python datetime

Python Getting the Current Date and Time

The datetime.now() function creates a datetime object with the current date and time. The function is particularly useful for adding timestamps to events or records, such as log entries, or measuring the current time.

from datetime import datetime

current_time = datetime.now()

print(current_time)  # Outputs the current date and time.

Python String to datetime

Using the strptime() method, you can convert strings to datetime objects (also known as parsing).

from datetime import datetime

date_string = "2024-09-19 15:45:30"
date_object = datetime.strptime(date_string, "%Y-%m-%d %H:%M:%S")

print(date_object)  # Outputs: 2024-09-19 15:45:30

In this example, the string 2024-09-19 15:45:30 is converted into a datetime object using the format "%Y-%m-%d %H:%M:%S". You can adjust the format string to match different date and time formats.

Python datetime to String

datetime is also helpful for creating human-readable dates in a specific format on a website or in reports. In such scenarios, you can use the strftime() method to convert a datetime object into a formatted string.

from datetime import datetime

now = datetime.now()
formatted_date = now.strftime("%A, %B %d, %Y")

print(formatted_date)  # Outputs: 'Thursday, September 19, 2024'

Python datetime Comparison

You can compare datetime objects to determine if one date is before, after, or the same as another. This is useful for scheduling systems, event triggers, or expiration dates.

from datetime import datetime

deadline = datetime(2024, 9, 20, 12, 0, 0)
now = datetime.now()

if now > deadline:
    print("Deadline has passed!")
else:
    print("You still have time.")

Examples of Using Python datetime

Scheduling and Notifications

Many apps use the datetime module to schedule tasks and send notifications. For example, a reminder app might use the module to trigger notifications at specific times.

from datetime import datetime, timedelta

now = datetime.now()
reminder_time = now + timedelta(hours=2)  # Set a reminder for 2 hours from now

print(f"Reminder set for: {reminder_time}")

In this case, the user sets a reminder two hours from the current time.

Tracking Events in a Web Application

Web applications often use datetime to log user activity. For instance, tracking the date and time a user registers, logs in, or performs actions can help maintain records.

from datetime import datetime

user_registration = datetime.now()
print(f"User registered at: {user_registration}")

Time Zone Conversion in Global Apps

In global applications, you might need to handle multiple time zones. Using the pytz module, you can convert datetime objects to different time zones.

from datetime import datetime
import pytz

utc = pytz.utc
eastern = pytz.timezone('US/Eastern')

now_utc = datetime.now(utc)
now_est = now_utc.astimezone(eastern)

print(f"Current time in UTC: {now_utc}")
print(f"Current time in Eastern Time: {now_est}")

This example converts the current time in UTC to Eastern Time (US).

Learn More About Python datetime

datetime and date in Python

You might not always need a complete datetime object, like when working with calendar dates (birthdays, deadlines, etc.). In such cases, you can use the date class (datetime.date) and handle dates (year, month, day) without concern for time.

from datetime import date

# Get today's date
today = date.today()

# Create a specific date (year, month, day)
my_birthday = date(1995, 5, 16)

# Access individual components
print("Year:", today.year)
print("Month:", today.month)
print("Day:", today.day)

Key methods and attributes of the date class are:

  • date.today(): Returns the current date.
  • date(year, month, day): Creates a new date object.
  • year, month, day: Attributes to access individual components of a date.

Python time Class

The time class represents the time of day (hour, minute, second, microsecond) and does not include date information.

Similarly, you might not need datetime if you only want to handle time information. The time class (datetime.time) in Python represents the time of day (hour, minute, second, microsecond) without date information.

from datetime import time

# Create a time object (hours, minutes, seconds)
meeting_time = time(14, 30, 0)

# Access individual components
print("Hour:", meeting_time.hour)
print("Minute:", meeting_time.minute)
print("Second:", meeting_time.second)

You can use time when only the time of day matters (scheduling events, setting alarms, etc.). Essential methods and attributes of the time class include:

  • time(hour, minute, second, microsecond): Creates a time object. All parameters are optional and default to 0.
  • hour, minute, second, microsecond: Attributes to access individual components of the time.

Python datetime Formats

In Python, you can format or parse time using a range of different format codes. Ubiquitous format codes are:

  • %Y: Year with century (e.g., 2023)
  • %y: Year without century (e.g., 23)
  • %m: Month as a zero-padded decimal number (e.g., 01 for January)
  • %B: Full month name (e.g., January)
  • %d: Day of the month as a zero-padded decimal number (e.g., 01)
  • %A: Full weekday name (e.g., Monday)
  • %H: Hour (24-hour clock) as a zero-padded decimal number (e.g., 14)
  • %M: Minute as a zero-padded decimal number (e.g., 30)
  • %S: Second as a zero-padded decimal number (e.g., 59)
  • %p: AM or PM
  • %z: UTC offset (e.g., +0000)
  • %c: Date and time representation appropriate to the locale (e.g., Tue Aug 16 21:30:00 2023)

Date Arithmetic with timedelta

The timedelta class makes date arithmetic simple. For example, you can add or subtract days, hours, minutes, and even seconds to a datetime object. Date arithmetic is particularly useful for calculating deadlines or future events.

from datetime import datetime, timedelta

now = datetime.now()
tomorrow = now + timedelta(days=1)

print(f"Tomorrow's date: {tomorrow}")
Learn to Code in Python for Free
Start learning now
button icon
To advance beyond this tutorial and learn Python by doing, try the interactive experience of Mimo. Whether you're starting from scratch or brushing up your coding skills, Mimo helps you take your coding journey above and beyond.

Sign up or download Mimo from the App Store or Google Play to enhance your programming skills and prepare for a career in tech.

You can code, too.

© 2024 Mimo GmbH