Introduction

Python’s datetime module is a comprehensive library that provides classes for manipulating dates and times. This module is essential for any Python programmer, as it allows for the creation, manipulation, and formatting of dates and times in a variety of ways. In this blog post, we will delve into the features and functionalities of the datetime module, exploring its classes, methods, and use cases.but first i would like you to run the code below and try to understand how this module works.we will talk about this in conclultion at the end

from datetime import datetime #importing the module

# Get the current date and time
now = datetime.now()
print("Current date and time:", now)

# Get the current date only
today = datetime.today().date()
print("Current date:", today)

# Get the current time only
current_time = datetime.now().time()
print("Current time:", current_time)
Python

Classes in the Datetime Module

The datetime module contains five main classes:

Methods in the Datetime Module

The datetime module provides a wide range of methods for manipulating and formatting dates and times. Here are some of the most commonly used methods:

Let’s explore each class and method in the datetime module with real-life code examples:

Please note that in examples below (for classes and methods ) we are constructing date/time objects (manually creating time objects but i am encouraging you to work with live datetime. you can follow the example below to work with live date\time ).

from datetime import datetime, time

# Get the current time
current_time = datetime.now().time() # getting current time only
current_date = datetime.now().date() # getting current date only

print("Current time:", current_time)  # Output will be the current time, e.g., 12:30:45
print("current Date:", current_date)

# Accessing hour, minute, second, and microsecond
print("Hour:", current_time.hour)         # Output: e.g., 12
print("Minute:", current_time.minute)     # Output: e.g., 30
print("Second:", current_time.second)     # Output: e.g., 45
print("Microsecond:", current_time.microsecond)  # Output: e.g., 123456

# Create a specific time object
specific_time = time(12, 30, 45)  # (hours, minutes, seconds)
print("Specific time:", specific_time)  # Output: 12:30:45

# Replace hour, minute, second, or microsecond
new_time = specific_time.replace(hour=13)
print("New time:", new_time)  # Output: 13:30:45
Python

let us explore the classes and methods

date class : The date class represents a date in the format year, month, and day.

from datetime import date

# Create a date object
d = date(2024, 8, 7)

print(d) 

# Accessing year, month, and day
print(d.year)  
print(d.month)  
print(d.day)  

# Replace year, month, or day
d = d.replace(year=2025)
print(d)
Python

time class

The time class represents a time in the format hour, minute, second, and microsecond.

from datetime import time

# Create a time object
t = time(12, 30, 45) # (hours, minutes , second)

print(t)  # Output: 12:30:45

# Accessing hour, minute, second, and microsecond
print(t.hour)  # Output: 12
print(t.minute)  # Output: 30
print(t.second)  # Output: 45
print(t.microsecond)  # Output: 0

# Replace hour, minute, second, or microsecond
t = t.replace(hour=13)
print(t)  # Output: 13:30:45
Python

datetime class: The datetime class represents a combination of date and time.

from datetime import datetime

# Create a datetime object
dt = datetime(2024, 8, 7, 12, 30, 45)

# to change the dt variable to use live datetime please do this 
# dt = datetime.now()

print(dt)  # Output: 2024-08-07 12:30:45

# Accessing year, month, day, hour, minute, second, and microsecond
print(dt.year)  # Output: 2024
print(dt.month)  # Output: 8
print(dt.day)  # Output: 7
print(dt.hour)  # Output: 12
print(dt.minute)  # Output: 30
print(dt.second)  # Output: 45
print(dt.microsecond)  # Output: 0

# Replace year, month, day, hour, minute, second, or microsecond
dt = dt.replace(hour=13)
print(dt)  # Output: 2024-08-07 13:30:45
Python

timedelta class

The timedelta class represents a duration, i.e., the difference between two dates or times.

from datetime import datetime, timedelta

# Create two datetime objects
dt1 = datetime(2024, 8, 7, 12, 30, 45)
dt2 = datetime(2024, 8, 8, 13, 45, 0)

# Calculate the difference
diff = dt2 - dt1

print(diff)  # Output: 1 day, 1 hour, 14 minutes, 15 seconds

# Accessing days, seconds, and microseconds
print(diff.days)  # Output: 1
print(diff.seconds)  # Output: 4435
print(diff.microseconds)  # Output: 0
Python

tzinfo class The tzinfo class represents time zone information.

from datetime import datetime, timedelta, timezone

# Create a timezone object
tz = timezone(timedelta(hours=5, minutes=30))  # India time zone

# Create a datetime object with timezone
dt = datetime(2024, 8, 7, 12, 30, 45, tzinfo=tz)

print(dt)  # Output: 2024-08-07 12:30:45+05:30
Python

Methods

Let’s explore some of the commonly used methods in the datetime module:

from datetime import datetime

dt = datetime.now()
print(dt)  # Output: current date and time
Python
from datetime import date

d = date.today()
print(d)  # Output: current date
Python
from datetime import datetime

ts = 1693388245
dt = datetime.fromtimestamp(ts)
print(dt)  # Output: datetime object
Python

In Python, strptime and strftime are methods used for handling date and time data, but they serve different purposes:

format is a format code string that specifies the format of date_string.

strptime (string parse time):

Purpose: Converts a string representation of a date and/or time into a datetime object.

Usage: You use strptime when you have a date/time string and you want to create a datetime object from it.

Syntax:datetime.strptime(date_string, format)

date_string is the string representing the date and/or time.

from datetime import datetime

date_string = "2024-08-03 14:30:00"
format = "%Y-%m-%d %H:%M:%S"

datetime_object = datetime.strptime(date_string, format)
print(datetime_object)  # Output: 2024-08-03 14:30:00
Python

strftime (string format time):

format is a format code string that specifies the format of the output string.

Purpose: Converts a datetime object into a string representation of the date and/or time, formatted according to a specified format string.

Usage: You use strftime when you have a datetime object and you want to format it as a string in a specific format.

Syntax:datetime.strftime(format)

from datetime import datetime

now = datetime.now()
format = "%Y-%m-%d %H:%M:%S"

formatted_string = now.strftime(format)
print(formatted_string)  # Output: e.g., 2024-08-03 14:30:00 (current date/time)
Python

Difference between two dates

  1. Import the datetime module.
  2. Create datetime objects for each of the dates.
  3. Subtract one datetime object from the other to get a timedelta object.
  4. Access the difference in days, seconds, or other units as needed.
from datetime import datetime

# Define two dates as strings
date_string1 = "2024-08-01"
date_string2 = "2024-08-03"

# Define the date format
format = "%Y-%m-%d"

# Convert strings to datetime objects
date1 = datetime.strptime(date_string1, format)
date2 = datetime.strptime(date_string2, format)

# Calculate the difference
difference = date2 - date1

# Print the difference
print("Difference in days:", difference.days)
Python

A Basic Age Calculator

Let us make a very basic age calculator that asks user to input their birthday with time and the program will tell how old the user is in days

from datetime import datetime

age = str(input("Please enter your birth details in yyyy-mm-dd H:M:S format"))
age = datetime.strptime(age, "%Y-%m-%d %H:%M:%S")
print(age)
print(type(age))
#Ok so now we got the birthday of our user let us tell the insights

how_old = datetime.now() - age
print(how_old)
Python

Age Calculator : Advance

from datetime import datetime
from dateutil.relativedelta import relativedelta

def calculate_age(birthday):
    now = datetime.now()
    age = relativedelta(now, birthday)

    # Calculate total number of days and seconds
    total_days = (now - birthday).days
    total_seconds = (now - birthday).total_seconds()

    # Format age output
    age_years = age.years
    age_months = age.months
    age_days = age.days
    age_hours = total_seconds // 3600
    age_minutes = total_seconds // 60
    age_seconds = total_seconds

    return (age_years, age_months, age_days, age_hours, age_minutes, age_seconds, total_days, total_seconds)

def main():
    # Ask the user for their birthday
    birthday_input = input("Enter your birthday (YYYY-MM-DD HH:MM:SS): ")

    # Define the format
    date_format = "%Y-%m-%d %H:%M:%S"

    try:
        # Parse the birthday input into a datetime object
        birthday = datetime.strptime(birthday_input, date_format)

        # Calculate age
        age = calculate_age(birthday)

        # Print age in various formats
        print(f"You are {age[0]} years, {age[1]} months, and {age[2]} days old.")
        print(f"You are approximately {age[3]} hours old.")
        print(f"You have spent approximately {age[4]} minutes on planet Earth.")
        print(f"You have spent approximately {age[5]} seconds on planet Earth.")
        print(f"Total days lived: {age[6]}")
        print(f"Total seconds lived: {age[7]}")

    except ValueError:
        print("The date format you entered is incorrect. Please use the format YYYY-MM-DD HH:MM:SS")

if __name__ == "__main__":
    main()
Python

Leave a Reply

Your email address will not be published. Required fields are marked *