Back to home

PrerequisitesGetting startedImporting the moduleGetting the local timeFormatting and parsingSleepComparing timesSummaryResources and further reading
Time Functionality In Python main image

Time Functionality In Python

This post will use the time module from Python's standard library to explore how we can work with different time capabilities such as getting the local time and sleeping within a program.

All of the code used in this post can be found in my GitHub repository.

Prerequisites

  1. Familiarity with Pipenv. See here for my post on Pipenv.
  2. Familiarity with iPython.
  3. ...

Getting started

Let's create the hello-python-time-module directory and install Pillow.

1 2 3 4 5 6 7 # Make the `hello-python-time-module` directory $ mkdir hello-python-time-module $ cd hello-python-time-module # Init the virtual environment $ pipenv --three $ pipenv install --dev ipython

At this stage, we are ready to explore using the time module using iPython.

To do so, run pipenv run ipython from the command line to open up the REPL.

Importing the module

First off, we will want to import the time module. We can do so from within the REPL with the following:

1 import time

Once imported, we can check that we have access to the time module by checking the __name__ attribute and playing around with a few methods.

1 2 time.__name__ # 'time' time.time() # 1628200068.664737

The method time that we called on the module returns the time in seconds since the epoch as a floating point number.

On most systems, the epoch is January 1st, 1970 at midnight. This is currently referred to as Unix time.

Getting the local time

We can also use the time module to get the local or GM time, as well as format the time to a more readable format.

1 2 3 time.localtime() # time.struct_time(tm_year=2021, tm_mon=8, tm_mday=6, tm_hour=7, tm_min=46, tm_sec=20, tm_wday=4, tm_yday=218, tm_isdst=0) time.gmtime() # time.struct_time(tm_year=2021, tm_mon=8, tm_mday=5, tm_hour=21, tm_min=46, tm_sec=32, tm_wday=3, tm_yday=217, tm_isdst=0) time.asctime(time.localtime()) # 'Fri Aug 6 07:51:53 2021'

Formatting and parsing

We have control over how we format and parse time with the strftime and strptime functions.

1 2 3 time.strptime("30 Nov 00", "%d %b %y") # time.struct_time(tm_year=2000, tm_mon=11, tm_mday=30, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=3, tm_yday=335, tm_isdst=-1) time.strftime("%m/%d/%Y, %H:%M:%S") # '08/06/2021, 07:56:44' time.strftime("%d %b %y", time.strptime("30 Nov 00", "%d %b %y")) # '30 Nov 00'

Sleep

We can use the time module to set a timer and sleep for a certain amount of time.

1 time.sleep(5) # notice that the REPL does not return until 5 seconds have passed

This can be useful when looping through intervals based on conditional logic.

Comparing times

We can use the datetime module to compare times by converting time objects to datetime objects.

We need to do so with the datetime.datetime.fromtimestamp method.

1 2 3 4 5 6 import datetime # Check time now is less than 1 second later datetime.datetime.fromtimestamp(time.time()) < datetime.datetime.now() + datetime.timedelta(seconds=1) # True # Check time now is after 1 second before datetime.datetime.fromtimestamp(time.time()) < datetime.datetime.now() - datetime.timedelta(seconds=1) # False

For more examples of datetime comparisons, see my post on Datetime In Python and more from my series Working with dates and times in Python.

Summary

Today's post demonstrates some usages of the time module from Python's standard library.

We covered a number of the standard methods and finished with an example on how to compare using the datetime module.

Resources and further reading

Photo credit: pawel_czerwinski

Dennis O'Keeffe

@dennisokeeffe92
  • Melbourne, Australia

Hi, I am a professional Software Engineer. Formerly of Culture Amp, UsabilityHub, Present Company and NightGuru.
I am currently working on workingoutloud.dev, Den Dribbles and LandPad .

Related articles


1,200+ PEOPLE ALREADY JOINED ❤️️

Get fresh posts + news direct to your inbox.

No spam. We only send you relevant content.