The datetime package#
date objects#
from datetime import date
today_var = date.today()
today_var
datetime.date(2024, 5, 18)
today_var.year
2024
today_var.month
5
today_var.day
18
# monday = 0 & sunday = 6
today_var.weekday()
5
today_var.isoformat()
'2024-05-18'
birthday = date(year=1986, month=6, day=3)
birthday.isoformat()
'1986-06-03'
time objects#
from datetime import time
some_time = time(hour=16, minute=59, second=23, microsecond=254724)
some_time.isoformat()
'16:59:23.254724'
datetime objects#
from datetime import datetime
this_time = datetime.now()
this_time
datetime.datetime(2024, 5, 18, 14, 52, 14, 758757)
this_time.isoformat()
'2024-05-18T14:52:14.758757'
string versions of dates#
See the following table for date format codes. Also see here.
Directive  | 
Meaning  | 
Example  | 
|---|---|---|
%a  | 
Weekday as locale’s abbreviated name.  | 
Sun, Mon  | 
%A  | 
Weekday as locale’s full name.  | 
Sunday, Monday  | 
%b  | 
Month as locale’s abbreviated name.  | 
Jan, Feb  | 
%B  | 
Month as locale’s full name.  | 
January, February  | 
%d  | 
Day of the month as a zero-padded decimal number.  | 
01, 02, …, 31  | 
%m  | 
Month as a zero-padded decimal number.  | 
01, 02, …, 12  | 
%y  | 
Year without century as a zero-padded decimal number.  | 
00, 01, …, 99  | 
%Y  | 
Year with century as a decimal number.  | 
2013, 2014  | 
%H  | 
Hour (24-hour clock) as a zero-padded decimal number.  | 
00, 01, …, 23  | 
%I  | 
Hour (12-hour clock) as a zero-padded decimal number.  | 
01, 02, …, 12  | 
%p  | 
Locale’s equivalent of either AM or PM.  | 
AM, PM  | 
%M  | 
Minute as a zero-padded decimal number.  | 
00, 01, …, 59  | 
%S  | 
Second as a zero-padded decimal number.  | 
00, 01, …, 59  | 
Print out a datetime value with a specific format. This will obviously work for dates or times as well.
d = datetime.now()
d.strftime('%I:%M %p on %B %d, %Y')
'02:52 PM on May 18, 2024'
dates from strings#
Suppose we have the following strings that need to be converted to dates/times/datetimes.
string_datetime = '10:48 PM on May 03, 2022'
string_date_1 = 'June 3, 1986'
string_date_2 = '6/3/86'
string_time = '11:15 PM'
We need to use the format codes in the previous table.
string_datetime = '10:48 PM on May 03, 2022'
datetime.strptime(string_datetime, '%I:%M %p on %B %d, %Y')
datetime.datetime(2022, 5, 3, 22, 48)
date does not have attribute strptime(). So if we technically want a date and not a datetime, then an additional step is required.
string_date_1 = 'June 3, 1986'
initial_obj = datetime.strptime(string_date_1, '%B %d, %Y')
date(
    year=initial_obj.year,
    month=initial_obj.month,
    day=initial_obj.day,
)
datetime.date(1986, 6, 3)
string_date_2 = '6/3/86'
initial_obj = datetime.strptime(string_date_2, '%m/%d/%y')
date(
    year=initial_obj.year,
    month=initial_obj.month,
    day=initial_obj.day,
)
datetime.date(1986, 6, 3)
time does not have attribute strptime(). So if we technically want a time, then an additional step is required.
string_time = '11:15 PM'
initial_obj = datetime.strptime(string_time, '%I:%M %p')
time(
    hour=initial_obj.hour,
    minute=initial_obj.minute,
)
datetime.time(23, 15)
timedelta objects#
Attention
Need to add this section.