DEV Community

Vicki Langer
Vicki Langer

Posted on

Charming the Python: datetime

If coding tutorials with math examples are the bane of your existence, keep reading. This series uses relatable examples like dogs and cats.


Datetime

datetime is a module for handling date and time. If you need a quick refresher, read here about importing modules.

Getting the datetime information

First, you need to import datetime.

>>> from datetime import datetime
>>> print(datetime.now())
2019-12-18 13:33:11.223728
Enter fullscreen mode Exit fullscreen mode

Formating datetime output using strftime

strftime refers to string representations of time with formatting.

Formatting datetime output is done with many different codes. Here are a few common ones.

Format Code What it Does Output
%a Short Weekday Tues
%A Weekday Tuesday
%d Day of Month 01, 02, …, 31
%b Short Month Dec
%B Month December
%y Short Year 19
%Y Year 2019
%p am/pm PM
%H Hours (24-hour clock) 00, 01, …, 23
%I Hours (12-hour clock) 01, 02, …, 12
%M Minutes 00, 01, …, 59
%S Seconds 00, 01, …, 59

If you've been in the military, it's likely you used 24-hour time to avoid confusion. For example 1300 hrs would be the same as 1 pm.
Here's an example using 24-hr time.

>>> from datetime import datetime

>>> now = datetime.now()
>>> time = now.strftime("%H%M")
>>> print(time)
1353
Enter fullscreen mode Exit fullscreen mode
>>> from datetime import datetime

>>> another_time = now.strftime("Today is %A, %d %B %Y.")
>>> print(another_time)
Today is Wednesday, 18 December 2019.
Enter fullscreen mode Exit fullscreen mode

For more strftime() Format Codes, check out the docs

String to time using strptime

strptime takes strings and creates objects from them.

Think of strptime() as being backwards from strftime(). Consider this example to be an intro to parsing data.

>>> from datetime import datetime

>>> a_date = "Today is Wednesday, 18 December 2019."
>>> date_object = datetime.strptime(a_date, "Today is %A, %d %B %Y.")
>>> print(date_object)
2019-12-18 00:00:00
Enter fullscreen mode Exit fullscreen mode

For more strptime() Format Codes, check out the docs

Use date from datetime

>>> from datetime import date

>>> print(date.today())  # return current local date
2019-12-18
Enter fullscreen mode Exit fullscreen mode

time object to represent time

from datetime import time

>>> print(time(12,3))  # prints exactly what you give it, in time format
12:03:00
Enter fullscreen mode Exit fullscreen mode

Difference between two datetimes

>>> from datetime import date

>>> now = datetime(year = 2019, month = 12, day = 18, hour = 12, minute = 13, second = 0)
>>> new_year = datetime(year = 2020, month = 1, day = 1, hour = 0, minute = 0, second = 0)
>>> remaining = new_year - now
>>> print(remaining)
13 days, 11:47:00
Enter fullscreen mode Exit fullscreen mode

The below example shows the difference between to dates

>>> from datetime import date

>>> today = date(year=2019, month=12, day=18)
>>> new_year = date(year=2020, month=1, day=1)
>>> time_left_in_year = new_year - today
>>> print(time_left_in_year)
14 days
Enter fullscreen mode Exit fullscreen mode

For more info on the datetime module, check out the Python docs.


Series loosely based on

Top comments (0)