3 min to read
Python Dates Cheat Sheet
Quick tips and tricks to work with dates in python
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. |