Python Dates Cheat Sheet

Quick tips and tricks to work with dates in python

Featured image

The subject of dates comes up pretty often in the projects that I work on. I find myself heading to google pretty often to find

Date Offsets using replace

import datetime


today = datetime.datetime.today()
first_of_month = today.replace(day=1)
first_day_of_year = today.replace(day=1, month=1)
previous_year = today.replace(year=(today.year - 1))
same_day_last_year = today.replace(year=(today.year - 1),
                                  day=(today.day + 1))
previous_day_last_year = today.replace(year=(today.year - 1),
                                       day=(today.day -1))

print(f"First of Month: {first_of_month}")
print(f"First day of Year: {first_day_of_year}")
print(f"Previous Year: {previous_year}")
print(f"Same Day Last Year: {same_day_last_year}")
print(f"Previous Day Last Year: {previous_day_last_year}")

Strftime Formats

I use Strftime.org pretty often when looking up the available formats for strftime. Just in case this awesome resource ever goes away, I’ve backed up their contents here.

Code Example Description
%a Sun Weekday as locale’s abbreviated name.
%A Sunday Weekday as locale’s full name.
%w 0 Weekday as a decimal number, where 0 is Sunday and 6 is Saturday.
%d 08 Day of the month as a zero-padded decimal number.
%-d 8 Day of the month as a decimal number. (Platform specific)
%b Sep Month as locale’s abbreviated name.
%B September Month as locale’s full name.
%m 09 Month as a zero-padded decimal number.
%-m 9 Month as a decimal number. (Platform specific)
%y 13 Year without century as a zero-padded decimal number.
%Y 2013 Year with century as a decimal number.
%H 07 Hour (24-hour clock) as a zero-padded decimal number.
%-H 7 Hour (24-hour clock) as a decimal number. (Platform specific)
%I 07 Hour (12-hour clock) as a zero-padded decimal number.
%-I 7 Hour (12-hour clock) as a decimal number. (Platform specific)
%p AM Locale’s equivalent of either AM or PM.
%M 06 Minute as a zero-padded decimal number.
%-M 6 Minute as a decimal number. (Platform specific)
%S 05 Second as a zero-padded decimal number.
%-S 5 Second as a decimal number. (Platform specific)
%f 000000 Microsecond as a decimal number, zero-padded on the left.
%z +0000 UTC offset in the form ±HHMM[SS[.ffffff]] (empty string if the object is naive).
%Z UTC Time zone name (empty string if the object is naive).
%j 251 Day of the year as a zero-padded decimal number.
%-j 251 Day of the year as a decimal number. (Platform specific)
%U 36 Week number of the year (Sunday as the first day of the week) as a zero padded decimal number. All days in a new year preceding the first Sunday are considered to be in week 0.
%W 35 Week number of the year (Monday as the first day of the week) as a decimal number. All days in a new year preceding the first Monday are considered to be in week 0.
%c Sun Sep 8 07:06:05 2013 Locale’s appropriate date and time representation.
%x 09/08/13 Locale’s appropriate date representation.
%X 07:06:05 Locale’s appropriate time representation.
%% % A literal '%' character.